Skip to content

MercatorCoordinate


MercatorCoordinate 对象表示投影的三维位置
MercatorCoordinate 使用 web 墨卡托投影 (EPSG:3857),单位略有不同:

  • 1个单位的大小是投影世界的宽度,而不是“墨卡托计”
  • 坐标空间的原点在西北角而不是中间。 例如,MercatorCoordinate(0, 0, 0) 是墨卡托世界的西北角,MercatorCoordinate(1, 1, 0) 是东南角。 如果您熟悉矢量切片,将坐标空间视为范围为 1 的 0/0/0 切片可能会有所帮助。

MercatorCoordinate 的 z 维度是垂直的。 墨卡托坐标空间中的立方体将呈现为立方体。

js
// z默认值为0
new DiMap.MercatorCoordinate(x: number, y: number, z: number)

示例

js
const nullIsland = new DiMap.MercatorCoordinate(0.5, 0.5, 0);

实例属性

静态方法

1. fromLngLat(lll: LngLatLike, altitude: number): MercatorCoordinate

将经纬度投影到墨卡托坐标 altitude:海拔高度,默认0

js
const coord = DiMap.MercatorCoordinate.fromLngLat({lng: 0, lat: 0}, 0);
console.log(coord); // MercatorCoordinate(0.5, 0.5, 0)

实例方法

1. toLngLat(): LngLat

墨卡托坐标转换为经纬度坐标

示例

js
const coord = new DiMap.MercatorCoordinate(0.5, 0.5, 0);
const lngLat = coord.toLngLat(); // LngLat(0, 0)

2. toAltitude(): number

返回海拔高度值

示例

js
const coord = new DiMap.MercatorCoordinate(0, 0, 0.02);
coord.toAltitude(); // 6914.281956295339

3. meterInMercatorCoodinateUnits(): number

返回此纬度上 1 米的距离(以 MercatorCoordinate 为单位)。
对于使用米的现实世界单位的坐标,这自然提供了转换为 MercatorCoordinates 的比例。

示例

js
// Calculate a new MercatorCoordinate that is 150 meters west of the other coord.
const coord = new DiMap.MercatorCoordinate(0.5, 0.25, 0);
const offsetInMeters = 150;
const offsetInMercatorCoordinateUnits = offsetInMeters * coord.meterInMercatorCoordinateUnits();
const westCoord = new DiMap.MercatorCoordinate(coord.x - offsetInMercatorCoordinateUnits, coord.y, coord.z);