# 地理坐标与几何坐标
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