ionic添加百度地图定位插件cordova-plugin-baidu-geolocation.git

该插件适合在ionic工程的js代码中直接调用定位功能(包括wifi、基站、GPS),返回指定坐标系的位置信息,支持位置追踪。
具体步骤如下:
1,如果电脑没有安装git,请先安装git,官方下载链接:
https://git-scm.com/download/win

2,进入ionic工程目录,执行以下指令:

cordova plugin add https://github.com/ETENG-OSP/cordova-plugin-baidu-geolocation.git --variable API_KEY=百度分配的AK --save

3,如果工程已经添加了安卓或者iOS的platform,分别移除之后再添加,如果还未添加platform则忽略。

ionic remove platform android
ionic remove platform ios
ionic add platform android
ionic add platform ios

4,在ionic工程中的config.xml文件中添加配置。

  <!-- android 使用本插件 -->
  <platform name="android">
    ......
    <plugin name="cordova-plugin-baidu-geolocation" spec="https://github.com/ETENG-OSP/cordova-plugin-baidu-geolocation">
      <variable name="API_KEY" value="百度分配的AK" />
    </plugin>
    ......
  </platform>

  <!-- iOS 使用官方插件 -->
  <platform name="ios">
    ......
    <plugin name="cordova-plugin-geolocation" spec="~1.0.0" />
    ......
  </platform>

关于百度地图的api_key,使用前需要在百度申请应用,获取 API_KEY。填错了的话仅能使用 GPS 定位,无法使用基站与 WIFI 定位。

5,在工程js代码中使用,直接贴代码:

if(navigator.geolocation) {
          navigator.geolocation.getCurrentPosition(function(position) {
            var point = new BMap.Point(position.coords.longitude, position.coords.latitude);
            if(ionic.Platform.isIOS()){
              //判断终端是否为IOS,如果是IOS则进行坐标转换(IOS返回的不是百度地图坐标系)
              var convertor = new BMap.Convertor();
              var pointArr = [];
              pointArr.push(point);
              convertor.translate(pointArr, 0, 5, function(data){
                if (data.status === 0) {
                  //获取到bd09ll坐标系坐标
                  var locationPoint = new BMap.Point(data.points[0].lng, data.points[0].lat);
                }
              });
            }else{
                //安卓直接获取的是bd09ll坐标系坐标,不需要转换

            }
          }, function(error) {
            //定位失败相关操作
          }, {
            coorType: 'bd09ll',
            maximumAge: 3000,
            timeout: 2000,
            enableHighAccuracy: true
          });
        }else {
          //无法使用navigator.geolocation定位相关操作
        }

关于配置项信息解释:

  coorType: 'bd09ll',         // 默认是 gcj02,可填 bd09ll 以获取百度经纬度用于访问百度 API
  maximumAge: 3000,         // 缓存时间
  timeout: 2000,            // 超时时间
  enableHighAccuracy: true  // 是否使用 GPS

6,如需要持续追踪用户位置:

navigator.geolocation.watchPosition(success, [error], [options]);

注意:如果你使用sdk23版本进行打包的,你就要注意了,在最新的android6.0上面,和以前的权限授权机制已经不同,如果使用23版本的进行打包,在android6.0以上的手机上运行不会给出获取地理位置权限的弹窗,务必改为23以下的版本进行编译

参考资料:
https://github.com/ETENG-OSP/cordova-plugin-baidu-geolocation/blob/master/README.md
http://blog.youkuaiyun.com/sean_css/article/details/52248190

百度地图定位Cordova插件,支持Android,IOS 可以在此地址查看example 基于百度地图Android版定位SDK(v7.1)以及百度地图IOS SDK (v3.2.1) 一,申请Android及IOS版密钥 申请密钥Android定位SDK 每一个AndroidManifest.xml 中的package属性 对应一个AK,不可混用 iOS SDK开发密钥 每一个Bundle Identifier 对应一个AK,不可混用 二,安装插件```` cordova plugin add cordova-plugin-baidumaplocation --variable ANDROID_KEY="" --variable IOS_KEY="" //此处的API_KEY_XX来自于第一步,直接替换,也可以最后跟 --save 参数,将插件信息保存到config.xml中 //如果只需要Android端或者IOS端,可以只填写一个相应的AK,但是都不填肯定不行 三,使用方法 // 进行定位 baidumap_location.getCurrentPosition(function (result) {     console.log(JSON.stringify(result, null, 4)); }, function (error) { }); 获得定位信息,返回JSON格式数据: {     "time": "2017-02-25 17:30:00",//获取时间     "latitude": 34.6666666,//纬度     "lontitude": 117.8888,//经度     "radius": 61.9999999,//半径     //--------Android 独享 begin     "locType": 161,//定位类型                                                 "locTypeDescription": "NetWork location successful!",//定位类型解释        "userIndoorState": 1,//是否室内                                          //--------Android 独享 end     //--------IOS 独享 begin     "title": "我的位置",//定位标注点标题信息     "subtitle": "我的位置",//定位标注点子标题信息     //--------IOS 独享 end } 具体字段内容请参照: Android版 BDLocation v7.1 IOS版 BMKUserLocation 如果Android版获取到的信息是: {     "locType": 505,     "locTypeDescription": "NetWork location failed because baidu location service check the key is unlegal, please check the key in AndroidManifest.xml !",     "latitude": 5e-324,     "lontitude": 5e-324,     "radius": 0,     "userIndoorState": -1,     "direction": -1 } 说明Key有问题,可以检查下生成的AndroidManifest.xml文件里面是否有如下信息                                                           如果没有,说明插件使用不当,尝试重新安装,如果有这些信息,说明Key与当前程序AndroidManifest.xml 中的package名不一致,请检查Key的申请信息是否正确 四,查看当前安装了哪些插件 cordova plugin ls 五,删除本插件 cordova plugin rm cordova-plugin-baidumaplocation 标签:cordova
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值