乐趣区

关于前端:openlayers基本概念

1. 天文坐标系

常见的为以下 3 种:

  • WGS84 坐标系
  • GCJ02(火星)坐标系
  • BD09(百度)坐标系

国内基本上应用前面 2 者。

2. 投影坐标系

投影坐标系应用基于 X,Y 值的坐标零碎来形容地球上某个点所处的地位。

投影坐标系由 以下参数确定:

  • 天文坐标系(如 WGS84)
  • 投影办法(如 Mercator 投影)

2.1 常见的投影坐标系

  • EPSG:4326(经纬度投影)
  • EPSG:3857(球面墨卡托投影)

看材料的时候发现 EPSG:4326 是天文坐标系,而 EPSG:3857 是投影坐标系, 这让我产生困惑,为什么 openlayer 中 projection 能设置EPSG:4346

defs('EPSG:4326', "+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees");

defs('EPSG:3857', "+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs");

通过 proj4js 源码能够看出,都是基于 84 坐标系,然而 proj 的不雷同。我的了解是在同一个坐标系下(WGS 84)采纳了不同的投影形式。

例如,广州天地图 API 服务提供了 2 种投影形式的 API 服务

总结

高德地图采纳了 Web Mercator(简直市面上所有地图都是如此),所以 openlayers 的 projecttion 的默认值为“EPSG:3857”,如果手动设置为“EPSG:4326”, 看起来会变形失真(见下图)。同时火星坐标系是基于 84 坐标系的根底上偏移计算失去的,只有投影形式统一,且点位数据进行坐标系转换,即可正确显示地图上。

  • 原图(WGS84 坐标系)

  • 墨卡托投影(Mercator)

退出移动版