由于项目的原因,博主最近天天围绕着地图转来转去~~~
之前,由于Leaflet
其自身的轻便性,博主和很多开发人员一样,偏爱着这个插件。
然而,随着对地图功能需求的提升,以及开发的深入,越到后面,越发现,Leaflet已经不能达到使用需求,且出现了很多问题。这些无解的问题,使得我不得不反思,是不是应该在这个项目上,弃用Leaflet。
在这边总结下项目需求:根据用户使用不同的语言加载不同的地图,如使用英语就加载谷歌地图;如使用中文,则加载高德或者百度地图。而这样,需要用到坐标定位、markers聚合、路径纠偏等等~~~
在之前的项目中,我们采用了:在leaflet的基础上,加载高德和谷歌的底层,勉强能凑合着用。后面由于需求的修改,需要再leaflet的基础上,加载百度地图,这就引发了很多其他问题。
当然,如果你的项目需求仅仅是国内且不允许地图拖动,那么,显然没什么问题。网络上有插件和很多这种文章,可以帮助你解决这种问题:百度地图坐标转换成墨卡托投影坐标 ,Proj4Leaflet API
但是如果显示的范围需要扩大到全球
,且允许用户自行拖拽
,就会发现一堆问题。
显示不全:
leaflet+高德地图,循环拖拽时,如图:这使得,如果你没有拖回原来的视图,你将无法看到原先可以看到的信息:
这使得我不得不考虑根据不同的应用场景,而调用不同的地图。
而为了解决以上提出的问题,我们需要对定位坐标系统有一些认识:
1.我们常用的坐标系有哪些?
WGS84
:大地坐标系,是目前广泛使用的GPS
全球卫星定位系统使用的坐标系。
GCJ02
:又称火星坐标系,是由中国国家测绘局制定的地理坐标系统
,是由WGS84加密后得到的坐标系。是国内最广泛使用的坐标体系,高德、腾讯、Google中国地图
都使用它
BD09
:为百度坐标系
,在GCJ02坐标系基础上再次加密。其中bd09ll表示百度经纬度坐标,bd09mc表示百度墨卡托米制坐标。
2.什么是墨卡托投影(Mercator projection)?
墨卡托投影
,也叫做:正轴等角圆柱投影。由荷兰地图学家墨卡托(G.Mercator)于1569年创立。百度地图
和Google Maps
使用的投影方法都是墨卡托投影。
墨卡托投影不适合在高纬度地区
使用。
墨卡托投影的地图最大的缺点
就是和现实差别太大,变形非常严重:比如非洲和格陵兰岛,加拿大。
其他:百度地图坐标系说明书