前置信息(术语)
坐标系
-
地理坐标系
地理坐标系是使用三维球面来定义地球表面位置,简单一点理解,地理坐标系就是用经度、纬度、高程这三个值来描述空间中一个点的位置信息。其中,应用较为广泛的地理坐标系就是WGS-84坐标,而它的代号也就是EPSG:4326。
当前比较普遍的地理坐标系有以下三类
-
WGS-84:GPS坐标系,是国际标准,GPS坐标(Google Earth使用、或者GPS模块)
-
GCJ-02:火星坐标系,国测局02年发布的坐标体系,中国坐标偏移标准,Google Map、高德、腾讯使用
-
BD-09:百度坐标系,百度自研,百度地图使用。
-
-
投影坐标系
投影坐标系的地图单位通常为米,它是从地球的近似椭球体投影得到的。在WEBGIS开发中,常用的投影坐标系就是web墨卡托投影,而它的代号也就是EPSG:3857。
-
坐标转换
在openlayers中,地理坐标系和投影坐标系之间的转换非常简单,ol提供了两种方式进行转换:transform、fromLonLat。
代码示例:
//方法一:ol.proj.transform
let point = ol.proj.transform([100, 50], "EPSG:4326", "EPSG:3857");
//输出:[11131949.079327358, 6446275.841017158]
//方法二:ol.proj.fromLonLat---第二个参数可以不传,默认为EPSG:3857,并且fromLonLat也是基于transform封装的
let point = ol.proj.fromLonLat([100, 50], "EPSG:3857");
//输出:[11131949.079327358, 6446275.841017158]
源码
/**
* Transforms a coordinate from longitude/latitude to a different projection.
* @param {import("./coordinate.js").Coordinate} coordinate Coordinate as longitude and latitude, i.e.
* an array with longitude as 1st and latitude as 2nd element.
* @param {ProjectionLike} [projection] Target projection. The
* default is Web Mercator, i.e. 'EPSG:3857'.
* @return {import("./coordinate.js").Coordinate} Coordinate projected to the target projection.
* @api
*/
export function fromLonLat(coordinate, projection) {
disableCoordinateWarning();
return transform(
coordinate,
'EPSG:4326',
projection !== undefined ? projection : 'EPSG:3857'
);
}
参考资料