hybrid應用 - 基於Cordova的地圖、定位組件的實現


Cordova介紹  

  Cordova是從PhoneGap中抽出的核心代碼,是驅動PhoneGap的核心引擎

   

技術探索

 

  常見地理坐標編碼

    高德地圖: GCJ-02

    百度地圖:BD-09

    GPS: WGS-84

 

  主流定位原理

    集合 gps,基站,wifi定位機制,單一定位弊端明顯。

 

  百度地圖坐標轉換原理圖

  

  

       

  高德地圖坐標轉換原理圖

    

  

 

 坐標編碼轉化: 

    GPS(WGS-84)轉 GCJ-02(國內地理坐標編碼)

    JS優秀項目 : https://github.com/hiwanz/wgs2mars.js.git

 

 cordova官方項目

    Cordova Geolocation Plugin 

    下載地址:https://github.com/apache/cordova-plugin-geolocation.git

 

 百度android sdk5.0 cordova版本

    下載地址:https://github.com/eleme/phonegap_baidu_sdk_location.git

    支持返回GCJ-02、BD-09編碼,默認返回GCJ-02編碼

   

  備注:不了解 github.com 的小伙伴們強烈建議去玩下,接下來我會將很多優秀項目介紹給大家

實現細節

  技術難點:兼容性

  簡單粗暴的javascriptAPI , 百度,高德測試安卓機,都出現機型兼容性問題,技術路線不通;

      國內定位geolocation安卓機存在兼容性問題,技術路線不通;

  百度和高德在國內定位做的還算不錯,兼容性問題很小,技術探索可將百度androidSDK/高德androidSDK封裝成cordova 插件,技術路線走通;

  IOS定位 geolocation 定位較好,不存在兼容性問題,但存在地理坐標編碼問題,geolocation 返回GPS(WGS-84)編碼,上文介紹已能解決,      技術路線走通;

  逆編碼問題: Amap之痛,高德javascript采用比較惡心的多次回調,普通調用方式,在cordova項目中壓根不起作用,嘗試過各種方                  式,<script></script> 無效,ajax 獲取 js文件,eval(js文件),存在比較惡心的第一次使用白屏,document.write()同樣不行,偶然嘗試了          jsonp機制,有效,分析其原理,然后衍生出兼容angular.js的javascript版本,技術路線走通;  

  高德地圖javascriptAPI引入cordova項目,tokenkey需要自己去申請

    // 初始化Amap
    function __initAmap(callback) {
      if (typeof AMap === 'undefined') {
      //jquery版本
      // $$.getJSON('http://webapi.amap.com/maps?v=1.3&key=tokenkey' +  '&callback=theFunctionName', {},    callback);

      // javascript版本(兼容angular.js)
      window.onloadAMap = function () {
          callback();
      };
      var url = 'http://webapi.amap.com/maps?v=1.3&key=tokenkey&callback=onloadAMap';
      var script = document.createElement('script');
      script.type = 'text/javascript';
      script.src = url;
      document.querySelector('head').appendChild(script);
     } else {
      callback();
     }
    }

  最終實現方案

    ios定位 gelocation

    android定位  將最新版本baidu sdk 5.0封裝成 cordova插件

    ios,android 逆編碼: 采用高德 javascriptAPI. 

    高德Amap的技術探索成功,將可實現所有地圖相關功能,包括繪制地圖,覆蓋圖層,導航等等....一切都基於Amap;

    

demo

  未完待續

 

技術交流: var.object@gmail.com 


免責聲明!

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



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