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