# 地理坐标与几何坐标
LngLat 和 LngLatBounds 表示地理世界中的点和面 坐标。Point 表示屏幕坐标系中的点。
# LngLat
LngLat对象表示一个指定的经纬度坐标,单位为度。
为了与 GeoJSON 格式匹配,aimap.gl 使用经度、纬度(而不是纬度、经度)的坐标顺序。
需注意,任何接受LngLat对象作为参数或选项的 aimap.gl 方法,同样也可以接受两个数字组成的Array,并且会进行隐式转换。这个灵活的类型被记录为LngLatLike。
new LngLat(lng: number, lat: number)
# 参数
lng:(number)经度,单位为度。
lat:(number)纬度,单位为度。
# 示例
var ll = new aimap.LngLat(-73.9749, 40.7736);
# 静态成员
convert(input)
将包含两个数字的数组或有着lng和lat或lon和lat属性的对象转化为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}
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
2
3
toArray()
返回包含两个数字的数组表示的坐标。
返回值
Array<number>: 以经纬度数组表示的坐标。
var ll = new aimap.LngLat(113.9749, 40.7736);
ll.toArray(); // = [113.9749, 40.7736]
2
toString()
返回以字符串表示的坐标。
返回值
string: 以 'LngLat(lng, lat)' 格式的字符串表示的坐标。
示例
var ll = new aimap.LngLat(113.9749, 40.7736);
ll.toString(); // = "LngLat(113.9749, 40.7736)"
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]]
2
# LngLatLike
一个LngLat对象,或者是表示经度和纬度的两个数字组成的数组, 也可以是一个具有lng和lat或者lon和lat属性的对象。
# 示例
var v1 = new aimap.LngLat(122.420679, 37.772537);
var v2 = [122.420679, 37.772537];
var v3 = {lon: 122.420679, lat: 37.772537};
2
3
# LngLatBounds
LngLatBounds对象表示一个地理边界框,由经纬度表示的西南和东北点来定义。
如果没有给构造函数提供参数,则创建一个null边界框。
注意,任何接受LngLatBounds对象作为参数或选项的 aimap.gl 方法,同样也可以接受由两个LngLatLike组成的Array,并会执行隐式转换。这种灵活的类型被记录为LngLatBoundsLike。
new LngLatBounds(sw: LngLatLike?, ne: LngLatLike?)
# 参数
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);
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}}
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}
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]]
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))"
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]];
2
3
4
5
6
# Point
一个 Point 对象, 具有 x 和 y 属性, 代表屏幕上像素坐标。
# PointLike
一个 Point 对象或者一个数组包含了 x 和 y 屏幕像素坐标。
# 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)
# 参数
x(number)x轴上的位置。
y(number)y轴上的位置。
z(number)(default 0)z轴上的位置。
# 示例
var nullIsland = new aimap.MercatorCoordinate(0.5, 0.5, 0);
# 静态成员
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)
2
# 实例成员
toLngLat()
返回该坐标的经纬度 LngLat 。
返回值
LngLat: LngLat 实例。
示例
var coord = new aimap.MercatorCoordinate(0.5, 0.5, 0);
var latLng = coord.toLngLat(); // LngLat(0, 0)
2
toAltitude()
返回该坐标的海拔高度,单位为米。
返回值
number: 海拔高度值,单位为米。
示例
var coord = new aimap.MercatorCoordinate(0, 0, 0.02);
coord.toAltitude(); // 6914.281956295339
2