高德地图JSAPI的使用注意项

前言

最近有个项目用到了高德地图,基于高德引擎进行相关需求的开发,开发过程中碰到了一些问题,简单的记录一下。

选择高德地图

那肯定是因为买了高德地图的什么东西哈哈哈,就是可以基于高德引擎进行开发并且部署在互联网上了。而且项目要部署在互联网上,只能使用火星坐标系的地图,不能使用WGS84坐标系。

地图坐标系

  1. 全球的坐标体系有几千种,常见的有GPS卫星定位的地球坐标系(WGS84)、火星坐标系(GCJ-02)、百度坐标系(BD-09)
  2. 高德地图使用的是火星坐标系,为什么叫火星坐标系,是因为地球人看不懂,哈哈哈哈
  3. 百度地图是在火星坐标系的基础上又进行了一次加密处理,底层也是火星坐标系

地图点位经纬度不准确

下面是自己的理解,可能有理解错误的地方。

  1. 市面上的地图,上面的点位的经纬度都是有偏差的,是因为国家安全等一些不可抗拒原因,地图厂家拿到准确的84坐标后,会经过加密处理转为其它坐标系,并让其产生一定的经纬度偏差;
  2. 国家规定互联网上的地图都是使用火星坐标系,不允许使用84坐标系;
  3. 相比与矢量图,卫星遥感地图看着更精准一些,因为可以看到一些模糊的建筑物,但是点位经纬度上还是有偏差的;
  4. 有人会疑惑,使用高德地图进行导航时为啥会这么准确。那是因为只是表面上让你看着准确而已,使用的是一种相对准确位置,相对于参照物而言是准确的;
  5. 有比卫星地图更清晰的地图,就是使用航拍,但是价格很贵,要联系专门的公司进行航拍;而且花钱买下清晰的地图后,后期想进行地图更新,要花费同样的价格进行购买新地图,这是赤裸裸的坑人啊;
  6. 不同的坐标系进行相互转换时,会产生经纬度的偏差,意思就是坐标转换后的点位经纬度完全不准确;而且随着转换次数的增加,偏差越来越大。

高德地图JSAPI版本问题

  1. 目前高德地图JSAPI可以使用的有1.14.5和2.0两个版本。
  2. 2.0版本感觉还处于开发版本,提供的api很少,不怎么够用,在使用前端点位聚合时,碰到了一些问题,发现2.0版和1.14.5版有一些区别,此问题解决后后续又发现很多问题,如点位的title直接失效等,于是放弃了2.0版,使用1.14.5版JSAPI。
  3. 推荐使用1.14.5版JSAPI,相对于2.0版本,api更多一些,更稳定一些。
  4. 后期在点位聚合从前端聚合转为后端聚合后,还是使用了1.14.5版本,因为2.0版本的在地图层级缩放时有小数层级,在加载其它地图瓦片时出现了字体模糊的问题,而1.14.5版本都是整数级缩放地图层级,不会出现模糊问题。

点位聚合

第一版使用的是前端聚合方案,使用起来很流畅,但是在点位数据量很大的环境中,如10万点位,操作起来与请求数据首次渲染就很卡了。第二版转成了后端聚合方案,这个比较考验后端聚合的算法,目前后端好像使用的网格聚合,主要是根据可视区与地图层级进行聚合。

加载其它地图瓦片

为什么会有这个需求呢,是因为高德地图对边境地区与偏远山区的支持不怎么好,很多地图切片信息不完整,这时候需要加载其它地图的瓦片。

这里以加载天地图瓦片为例,高德官网介绍对于WMTS格式的地图瓦片格式,只能加载火星坐标系的瓦片。
在这里插入图片描述

天地图提供了两种WTMS格式的瓦片,使用高德引擎加载天地图瓦片时只能加载球面墨卡托投影的地图瓦片。

在这里插入图片描述

这里不得不吐槽一下高德文档,这里感觉有问题,文档上说什么TileMatrixSet参数请勿添加,就是使用默认值的意思,但是使用默认值是不对的。

在这里插入图片描述

应该根据天地图文档的要求,改成相应的值。这里的参数 img_w Layer=img TileMatrixSet=w 是对应关系,使用其它类型瓦片要做对应的修改。

在这里插入图片描述

使用高德引擎加载了天地图瓦片后,由于天地图瓦片是84坐标系的,所以之前在地图上进行展示的点位时会产生偏离。解决这个问题需要进行点位经纬度坐标系的转换,从火星坐标系转为84坐标系后再进行点位展示就好了。

至于如何进行经纬度坐标系转换,github上有个开源库,精准度很高,我忘了地址了,可以自行搜一下。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值