由於項目的原因,博主最近天天圍繞着地圖轉來轉去~~~
之前,由於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
使用的投影方法都是墨卡託投影。
墨卡託投影不適合在高緯度地區
使用。
墨卡託投影的地圖最大的缺點
就是和現實差別太大,變形非常嚴重:比如非洲和格陵蘭島,加拿大。
其他:百度地圖座標系說明書