# 地理坐标与几何坐标

LngLatLngLatBounds 表示地理世界中的点和面 坐标。Point 表示屏幕坐标系中的点。

# LngLat

LngLat对象表示一个指定的经纬度坐标,单位为度。

为了与 GeoJSON 格式匹配,aimap.gl 使用经度、纬度(而不是纬度、经度)的坐标顺序。

需注意,任何接受LngLat对象作为参数或选项的 aimap.gl 方法,同样也可以接受两个数字组成的Array,并且会进行隐式转换。这个灵活的类型被记录为LngLatLike

new LngLat(lng: number, lat: number)
1

# 参数

lng(number)经度,单位为度。

lat(number)纬度,单位为度。

# 示例

var ll = new aimap.LngLat(-73.9749, 40.7736);
1

# 静态成员

convert(input)

将包含两个数字的数组或有着lnglatlonlat属性的对象转化为LngLat对象。

如果传递的是一个LngLat对象,则该函数将其原样返回。

参数

input(LngLatLike)待转化的包含两个数字的数组或对象,或者待返回的 LngLat 对象。

返回值

LngLat: 转化后得到的新的 LngLat 对象,或是原来的 LngLat 对象。

示例

var arr = [113.9749, 40.7736];
var ll = aimap.LngLat.convert(arr);
ll;   // = LngLat {lng: 113.9749, lat: 40.7736}
1
2
3

# 实例成员

wrap()

返回一个经度在(-180,180)范围内的新的LngLat对象。

返回值

LngLat: 范围内的 LngLat 对象。

示例

var ll = new aimap.LngLat(473.0251, 40.7736);
var wrapped = ll.wrap();
wrapped.lng; // = 113.9749
1
2
3
toArray()

返回包含两个数字的数组表示的坐标。

返回值

Array<number>: 以经纬度数组表示的坐标。

var ll = new aimap.LngLat(113.9749, 40.7736);
ll.toArray(); // = [113.9749, 40.7736]
1
2
toString()

返回以字符串表示的坐标。

返回值

string: 以 'LngLat(lng, lat)' 格式的字符串表示的坐标。

示例

var ll = new aimap.LngLat(113.9749, 40.7736);
ll.toString(); // = "LngLat(113.9749, 40.7736)"
1
2
toBounds(radius)

返回一个在坐标位置扩展指定长度的LngLatBounds

参数

radius(number)(default 0)从坐标位置到扩展边界的距离(以米为单位)。

返回值

LngLatBounds: 一个新的 LngLatBounds 对象,表示由 半径 扩展的坐标。

示例

var ll = new aimap.LngLat(113.9749, 40.7736);
ll.toBounds(100).toArray(); // = [[113.97371378586722, 40.77270168472293], [113.97608621413279, 40.77449831527707]]
1
2

# LngLatLike

一个LngLat对象,或者是表示经度和纬度的两个数字组成的数组, 也可以是一个具有lnglat或者lonlat属性的对象。

# 示例

var v1 = new aimap.LngLat(122.420679, 37.772537);
var v2 = [122.420679, 37.772537];
var v3 = {lon: 122.420679, lat: 37.772537};
1
2
3

# LngLatBounds

LngLatBounds对象表示一个地理边界框,由经纬度表示的西南和东北点来定义。

如果没有给构造函数提供参数,则创建一个null边界框。

注意,任何接受LngLatBounds对象作为参数或选项的 aimap.gl 方法,同样也可以接受由两个LngLatLike组成的Array,并会执行隐式转换。这种灵活的类型被记录为LngLatBoundsLike

new LngLatBounds(sw: LngLatLike?, ne: LngLatLike?)
1

# 参数

sw(LngLatLike?)范围框的西南角。

ne(LngLatLike?)范围框的东北角。

# 示例

var sw = new aimap.LngLat(121.9876, 31.7661);
var ne = new aimap.LngLat(121.9397, 31.8002);
var llb = new aimap.LngLatBounds(sw, ne);
1
2
3

# 静态成员

convert(input)

将数组转换为LngLatBounds对象。

如果传递的参数是一个LngLatBounds对象,则该函数将其原样返回。

该函数会在内部调用LngLat#convert函数,将数组转换为LngLat值。

参数

input(LngLatBoundsLike)待转换的包含两个坐标的数组,或者待返回的 LngLatBounds 对象。

返回值

LngLatBounds: 转换之后得到的新的 LngLatBounds 对象,或者原来的 LngLatBounds 对象。

示例

var arr = [[121.9876, 31.7661], [121.9397, 31.8002]];
var llb = aimap.LngLatBounds.convert(arr);
llb;   // = LngLatBounds {_sw: LngLat {lng: 121.9876, lat: 31.7661}, _ne: LngLat {lng: 121.9397, lat: 31.8002}}
1
2
3

# 实例成员

setNorthEast(ne)

设置范围框的东北角。

参数

ne(LngLatLike)

返回值

LngLatBounds: this

setSouthWest(sw)

设置范围框的西南角。

参数

sw(LngLatLike)

返回值

LngLatBounds: this

extend(obj)

扩展边界以包括指定的 LngLat 或 LngLatBounds。

参数

obj((LngLat | LngLatBounds))要扩展并包括的对象

返回值

LngLatBounds: this

getCenter()

返回一个到范围框四角距离相等的地理坐标。

返回值

LngLat: 范围框的中心。

示例

var llb = new aimap.LngLatBounds([121.9876, 31.7661], [121.9397, 31.8002]);
llb.getCenter(); // = LngLat {lng: 121.96365, lat: 31.78315}
1
2
getSouthWest()

返回范围框的西南角。

返回值

LngLat: 范围框的西南角。

getNorthEast()

返回范围框的东北角。

返回值

LngLat: 范围框的东北角。

getNorthWest()

返回范围框的西北角。

返回值

LngLat: 范围框的西北角。

getSouthEast()

返回范围框的东南角。

返回值

LngLat: 范围框的东南角。

getWest()

返回范围框的西部边界。

返回值

number: 范围框的西部边界。

getSouth()

返回范围框的南部边界。

返回值

number: 范围框的南部边界。

getEast()

返回范围框的东部边界。

返回值

number: 范围框的东部边界。

getNorth()

返回范围框的北部边界。

返回值

number: 范围框的北部边界。

toArray()

返回以数组形式表示的范围框。

返回值

Array<Array<number>>: 数组形式表示的范围框,包括以数字数组表示的范围框的西南角和东北角坐标。

示例

var llb = new aimap.LngLatBounds([121.9876, 31.7661], [121.9397, 31.8002]);
llb.toArray(); // = [[121.9876, 31.7661], [121.9397, 31.8002]]
1
2
toString()

返回以字符串形式表示的范围框。

返回值

string: 以 'LngLatBounds(LngLat(lng, lat), LngLat(lng, lat))' 格式的字符串表示的范围框。

示例

var llb = new aimap.LngLatBounds([121.9876, 31.7661], [121.9397, 31.8002]);
llb.toString(); // = "LngLatBounds(LngLat(121.9876, 31.7661), LngLat(121.9397, 31.8002))"
1
2
isEmpty()

检查范围框是否为空null-type 框。

返回值

boolean: 如果定义了范围框,则返回true,否则返回false。

# LngLatBoundsLike

一个LngLatBounds对象,或者是一个LngLatLike对象的数组以[西南,东北]为顺序, 也可以是一个数字组成的数组以[西,南,东,北]为顺序。

# 示例

var v1 = new aimap.LngLatBounds(
  new aimap.LngLat(121.9876, 31.7661),
  new aimap.LngLat(121.9397, 31.8002)
);
var v2 = new aimap.LngLatBounds([121.9876, 31.7661], [121.9397, 31.8002])
var v3 = [[121.9876, 31.7661], [121.9397, 31.8002]];
1
2
3
4
5
6

# Point

一个 Point 对象, 具有 xy 属性, 代表屏幕上像素坐标。

# PointLike

一个 Point 对象或者一个数组包含了 xy 屏幕像素坐标。

# MercatorCoordinate

一个 MercatorCoordinate 实例表示一个三维投影坐标。

MercatorCoordinate 使用Web墨卡托投影(EPSG:3857 (opens new window)) 但在单位处理上略微不同:

  • 单位1表示投影后世界的宽度而不是原来定义的墨卡托坐标中的米
  • 坐标空间的原点为西北角而不是原来的中心点

例如, MercatorCoordinate(0, 0, 0) 表示墨卡托空间的西北角, MercatorCoordinate(1, 1, 0) 表示东南角。如果你熟悉 vector tiles, 可以认为该坐标空间等同于 extent 为1的 0/0/0 矢量瓦片的坐标空间``。

z 轴在 MercatorCoordinate 中与其它轴是等比例共形相似的。墨卡托坐标中的立方体渲染出来仍是立方体。

new MercatorCoordinate(x: number, y: number, z: number)
1

# 参数

x(number)x轴上的位置。

y(number)y轴上的位置。

z(number)(default 0)z轴上的位置。

# 示例

var nullIsland = new aimap.MercatorCoordinate(0.5, 0.5, 0);
1

# 静态成员

fromLngLat(lngLatLike, altitude)

LngLat 投影转换为 MercatorCoordinate

参数

lngLatLike(LngLatLike)待转换位置的经纬度。

altitude(number)(default 0)该位置点的海拔高度,单位为米。

返回值

MercatorCoordinate: 已投影的墨卡托坐标。

示例

var coord = aimap.MercatorCoordinate.fromLngLat({ lng: 0, lat: 0}, 0);
coord; // MercatorCoordinate(0.5, 0.5, 0)
1
2

# 实例成员

toLngLat()

返回该坐标的经纬度 LngLat

返回值

LngLat: LngLat 实例。

示例

var coord = new aimap.MercatorCoordinate(0.5, 0.5, 0);
var latLng = coord.toLngLat(); // LngLat(0, 0)
1
2
toAltitude()

返回该坐标的海拔高度,单位为米。

返回值

number: 海拔高度值,单位为米。

示例

var coord = new aimap.MercatorCoordinate(0, 0, 0.02);
coord.toAltitude(); // 6914.281956295339
1
2
最后更新于: 12/1/2021, 7:00:27 PM