地圖改造總結,支持百度地圖、高德地圖切換


地圖改造總結

應用地圖兼容百度地圖、高德地圖改造背景

滿足需求所用高德地圖更換為百度地圖,進而對該應用地圖進行開發拓展,以滿足不同的地圖需求。

2. 地圖改造總結

2.1. lib文件夾下創建mapAdapter文件夾,相關文件介紹如下圖:

        

 

 

2.2. 提取業務代碼中使用的地圖公共api,進行封裝在基類ladapter.ts文件中,如圖:

         

 

 

2.3. amaplib.ts中繼承基類基類ladapter.ts並根據高德地圖api以及相關業務需求進行重寫或擴展該基類方法,如圖:

      

 

 

2.4. bmaplib.ts中繼承基類基類ladapter.ts並根據百度地圖api以及相關業務需求進行重寫或擴展該基類方法,如圖:

      

 

 

2.5. mapAdapter文件index.js中將所用地圖api方法進行封裝統一輸出,並默認加載高德地圖api如圖:

        

 

 

2.6. bankConfig文件platformSupport.ts中可根據需求修改配置加載對應的地圖api,配置修改如下圖:

         

 

 

2.7. 在業務代碼中例如setgps.vue考勤地點設置中使用如下圖所示:

        

 

 

3. 地圖擴展補充說明;

在實際銀行本地開發中,如有需求更改考勤應用所使用地圖,可在bankConfig文件platformSupport.ts中修改bmapFlag值,值為true加載百度地圖,值為false默認加載高德地圖;

如有需求更改地圖相關api,可在bankConfig文件中新建customBmaplib.ts文件,並在platformSupport.ts文件中引入customBmaplib.ts地圖api擴展類並修改對應配置代碼,該ts文件內容可繼承lib/mapAdapter/impl/bmaplib.ts地圖api類,進行擴展重寫百度地圖api方法,以達到滿足地圖相關業務需求;(高德地圖api擴展修改同上);

4. 改造中遇到的問題;

  1. 動態創建script標簽加載百度地圖后地圖加載不成功,地圖出不來;

原因:

 

 

 

解決方法:在地圖加載地址上加入參數&callback=onBMapCallback;

  2.使用百度地圖BMap定位點總是顯示在左上角,不居中;

原因:由於百度地圖加載地圖的dom元素上設置了v-show等顯示隱藏屬性 導致在地圖加載后定位點無法居中顯示

解決方法:去除百度地圖綁定dom元素上v-showv-if等顯示隱藏屬性如圖:

 

 

 

  3.Native返回的坐標值顯示在地圖上,定位不准;

原因:由於native返回的坐標系為谷歌坐標系GCJ-02,而web端百度地圖使用坐標系BD09,導致顯示定位有幾公里偏移;

解決方法:將native端返回的坐標(谷歌坐標系GCJ-02)轉換為百度坐標系BD09;案例如下圖:

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM