1、前言
上一篇博客介绍了如何利用OpenLayers
加载一幅OSM
地图,虽说代码十分简单,但其中的一个细节可能会被大家忽略掉,那就是EPSG:4326
和EPSG:3857
这两个值的意义。因此,这篇博客就来讲讲坐标系和投影的相关内容。
2、地理坐标系
地理坐标系(Geographic Coordinate System)
是使用三维球面来定义地球表面位置,简单一点理解,地理坐标系就是用经度
、纬度
、高程
这三个值来描述空间中一个点的位置信息。其中,应用较为广泛的地理坐标系就是WGS-84
坐标,而它的代号也就是EPSG:4326
。
3、投影坐标系
投影坐标系 (Projected Coordinate System)
的地图单位通常为米 ,它是从地球的近似椭球体投影得到的。在WebGIS
开发中,常用的投影坐标系就是web墨卡托投影
,而它的代号也就是EPSG:3857
。
4、地理坐标系和投影坐标系之间的相互转换
在OpenLayers
中,地理坐标系和投影坐标系之间的相互转换很简单,可以使用如下方法实现EPSG:4326
和EPSG:3857
之间的相互转换。
4.1、EPSG:4326—EPSG:3857
// 方法一:ol.proj.transform
// 结果为:[13358338.89519283, 3503549.843504374]
var point = ol.proj.transform([120, 30], 'EPSG:4326', 'EPSG:3857');
// 方法二:ol.proj.fromLonLat
// 结果为:[13358338.89519283, 3503549.843504374]
var point = ol.proj.fromLonLat([120, 30], 'EPSG:3857');
4.2、EPSG:3857—EPSG:4326
// 方法一:ol.proj.transform
// 结果为:[120, 30](四舍五入)
var point = ol.proj.transform([13358338.89519283, 3503549.843504374], 'EPSG:3857', 'EPSG:4326');
// 方法二:ol.proj.toLonLat
// 结果为:[120, 30](四舍五入)
var point = ol.proj.toLonLat([13358338.89519283, 3503549.843504374], 'EPSG:3857');
5、结语
这篇博客主要介绍了OpenLayers
中的坐标系和投影转换方法,如果开发WebGIS
相关模块,个人觉得了解这块内容还是很有必要的。