JSAPI Three API Reference
    正在准备搜索索引...

    类 EngineMap

    地图管理器,主要负责地图视野控制相关功能
    该类会随Engine的初始化自动实例化,不需要开发者手动执行初始化调用,通过engine.map访问

    engine.map.setCenter(center);
    engine.map.setZoom(14);

    层级

    • EventDispatcher
      • EngineMap
    索引

    构造函数

    • 参数

      • engine: Engine

        引擎实例

      • options: {
            center: number[] | Vector2;
            heading: number;
            pitch: number;
            projection: string;
            provider: TileProvider;
            range: number;
        } = {}

        参数选项,默认为空对象

        • center: number[] | Vector2

          初始视野中心点,经纬度形式。

        • heading: number

          初始视野旋转角度,以正北向为起始,逆时针方向递增。单位为角度。

        • pitch: number

          初始视野俯仰角,俯视为0,平时地平线为90。单位为角度。

        • projection: string

          目标投影。默认为EPSG:3857,即Web墨卡托投影。 可选投影包括:

          • EPSG:4326:WGS84坐标系,经纬度形式。
          • EPSG:3857:Web墨卡托投影,单位为米。别名包括EPSG:900913。
          • EPSG:4978:ECEF坐标系,单位为米。别名包括ECEF、GLOBE。
        • provider: TileProvider

          初始状态的底图Provider,该Provider决定初始化时显示什么样的地图。当不设置时,默认初始化百度矢量地图。 初始化时,引擎默认根据provider自动创建一层底图,当需要进行复杂设置(如加载地形、实现多底图层叠等)时,可设置为null禁用初始化行为,通过MapView稍后设置。

        • range: number

          初始视野相机相对屏幕中心点对应的地面坐标的距离。单位为米。

      返回 EngineMap

    方法

    • 视野通过动画过渡的方式飞到目标位置

      参数

      • target: any[] | Vector3

        目标视野中心点

      • options: {
            cancel: Function;
            complete: Function;
            duration: number;
            heading: number;
            pitch: number;
            range: number;
        } = {}

        目标视野与动画参数

        • cancel: Function

          动画取消回调。

        • complete: Function

          动画完成回调。

        • duration: number

          动画持续时间。单位为毫秒。

        • heading: number

          视野旋转角度,以正北向为起始,逆时针方向递增。单位为角度。

        • pitch: number

          视野俯仰角,俯视为0,平时地平线为90。单位为角度。

        • range: number

          视野距离地面的距离。单位为米。

      返回 any

    • 获取当前视口的包围盒,由当前投影自动决定类型:

      • 平面模式(3857/BD-09):返回投影坐标系下的 Box3(AABB);
      • 球体模式(ECEF):返回 OrientedBoundingBox(OBB)。

      参数

      • 可选result: any

        可选,复用已有实例以减少 GC。

      返回 any

    • 获取地图当前可视范围边界坐标,返回Box3对象,坐标为投影坐标格式

      返回 Box3

    • 获取地图当前相机位置,经纬度坐标和高度

      参数

      • target: Object3D

      返回 Vector3

    • 获取地图当前中心点

      返回 number[]

    • 获取当前视口在经纬度空间的地理包围盒。

      相较于策略层的同名实现,此版本的改进:

      • 使用 getHorizonNdcY(ndcX) 分别计算左右边缘的安全顶边像素, 有 roll 时左右地平线 NDC y 不同,不再共用同一个 safeTopY;
      • 不依赖 pitch / heading 角度参数,纯粹基于相机矩阵;
      • 自动兼容平面(3857)和球体(ECEF isGlobe)两种模式;
      • 自适应远端裁剪(clampFarPoint):以屏幕中心地面点为 SSE 基准, x = 2 × d_center × tan(fovHalf) 为该处一屏高度的世界距离, 最远端距离 maxFarDistance3d = sseScreenMultiplier × x,随倾角自动缩放,无需显式倾角常量。

      返回 { box: Box3 }

      box.min = Vector3(minLng, minLat, 0) box.max = Vector3(maxLng, maxLat, 0)

    • 获取地图当前旋转角度

      返回 number

    • 计算当前相机在指定屏幕列(ndcX)处的地面地平线 NDC y 值。

      有 roll 时地平线在 NDC 空间是一条斜线,不同列的 ndcY 不同: 平面模式:right.z·tanFovX·ndcX + up.z·tanFovY·ndcY = −forward.z → ndcY(ndcX) = (−forward.z − right.z·tanFovX·ndcX) / (up.z·tanFovY)

      对于 ECEF 球体模式,先在该列方向上求当地水平面角度,再减去地球曲率俯角。

      参数

      • 可选ndcX: number = 0

        目标屏幕列的 NDC x 坐标,-1 = 左边缘,0 = 中心列,1 = 右边缘

      返回 number

      该列地平线的 NDC y 值,Infinity 表示地平线在屏幕外(无穷远)

    • 获取地图当前倾斜角度

      返回 number

    • 获取NDC坐标处的像素大小

      参数

      • ndc: Vector2
      • 可选camera: PerspectiveCamera

        可选,相机实例;默认使用引擎当前相机

      返回 number

      1px 对应的世界长度

    • 获取像素坐标处的像素大小

      参数

      • pixel: Vector2
      • 可选camera: PerspectiveCamera

        可选,相机实例;默认使用引擎当前相机

      返回 number

      1px 对应的世界长度

    • 获取世界坐标处的像素大小

      参数

      • worldPosition: Vector3
      • 可选camera: PerspectiveCamera

        可选,相机实例;默认使用引擎当前相机

      返回 number

      1px 对应的世界长度

    • 获取距离相机 distance 处,屏幕 1px 对应的世界长度(world-per-pixel)。

      参数

      • distance: number

        相机到某个屏幕点对应地面世界坐标的 3D 距离

      • 可选camera: PerspectiveCamera

        可选,相机实例;默认使用引擎当前相机

      返回 number

      1px 对应的世界长度

    • 获取地图当前中心点的投影坐标

      返回 number[]

    • 获取地图当前视线方向距离地面的距离

      返回 number

    • 获取地图当前容器的长度和宽度

      返回 Vector2

    • 获取地图当前视图高度

      返回 number

    • 设置地图视野

      参数

      • target: any[] | Vector3

        目标视野中心点, 经纬度和海拔高度

      • offset: { heading: number; pitch: number; range: number } = {}

        视野角度,包括 heading、pitch,其中3d支持range、2d支持zoom

        • heading: number

          视野旋转角度,以正北向为起始,逆时针方向递增。单位为角度。

        • pitch: number

          视野俯仰角,俯视为0,平时地平线为90。单位为角度。

        • range: number

          视野距离地面的距离。单位为米。

      返回 void

    • 按照当前投影方式,将输入坐标转为投影坐标

      参数

      • input: number[]

        输入坐标

      • output: number[]

        输出坐标

      返回 number[]

    • 转换坐标数组

      参数

      • coordinates: any

      返回 number[]

    • 将地理坐标转换为投影坐标

      参数

      • input: Vector3
      • output: Vector3

      返回 Vector3

    • 设置地图可拖动视野区域

      参数

      • bounds: any[]

        区域的坐标,左下、右上的做标数组[sw, ne]

      返回 void

    • 设置地图中心点

      参数

      • center: number[]

        中心点坐标

      返回 void

    • 设置地图选转角度

      参数

      • heading: number

        选转角度

      返回 void

    • 设置3d地图最远视距

      参数

      • range: number

        距离

      返回 void

    • 设置3d地图最近视距

      参数

      • range: number

        距离

      返回 void

    • 设置地图倾斜角度

      参数

      • pitch: number

        倾斜角度

      返回 void

    • 动态切换地图投影方式,采用销毁-重建策略:

      1. 保存当前相机地理位置
      2. 更新投影
      3. 如需切换平面↔球面,销毁旧 Map 子类并创建新的
      4. 恢复相机位置
      5. 标记 projectionChanged,各对象在自身帧钩子中检测并自行重建

      参数

      • projection: any

        新的投影名称或投影实例

      返回 void

    • 设置地图视野距离地面的距离

      参数

      • range: number

        距离

      返回 void

    • 根据传入的坐标数组,设置地图视野

      参数

      • points: any[]

        坐标数组

      • options: { range: number } = {}

        偏移参数

        • range: number

          视野距离地面的距离。单位为米。

      返回 void

    • 设置地图缩放级别

      参数

      • zoom: number

        缩放级别

      返回 void

    • 按照当前投影方式,将输入坐标转为地理坐标

      参数

      • input: number[]
      • output: number[]

      返回 number[]

    • 将投影坐标转换为地理坐标

      参数

      • input: Vector3
      • output: Vector3

      返回 Vector3

    • 视野推进放大

      返回 void

    • 视野拉远缩小

      返回 void

    • 将地图缩放至object范围

      参数

      • object: Object3D
      • options: { range: number } = ...
        • range: number

          视野距离地面的距离。单位为米。

      返回 void

    访问器

    • get far(): any

      获取地图远裁面距离

      返回 any

    • get fov(): any

      获取地图视野开角

      返回 any

    • get mapView(): any

      获取初始化时创建的默认地图视图

      返回 any

    • get near(): any

      获取地图近裁面距离

      返回 any

    • get projection(): any

      获取投影方式

      返回 any

    • get showBoundingBox(): boolean

      是否显示视口包围盒调试辅助体(默认关闭)

      返回 boolean