ionic开发webApp---百度定位

反思

好久没写博客了,最近比较忙,这段时间忙的差不多了,博客一定要坚持写下去。

概述

最近客户提出了新的需求:在客户操作节点增加地图定位,以便获取操作节点时候的地理位置,经过调研发现,官方提供的有个叫cordova-plugin-geolocation的插件,在ios上可以直接使用,但是在天朝因为某些网络原因不能给正常使用,并且在网上很少能够搜索到关于这方面的文章,就去在github上找一些第三方提供的插件去实现。这里记录一下,防止以后走弯路。

1. 申请百度的秘钥 百度秘钥申请地址

2. 安装插件:

 ionic plugin add https://github.com/mrwutong/cordova-qdc-baidu-location --variable API_KEY="<API_KEY>" 

3. 使用方法

在需要获取位置信息的地方直接使用以下代码:

 baidu_location.getCurrentPosition(function ( message ) {
            console.debug(message);
        }, function ( message ) {
            console.debug(message);
        });

第一个函数是成功的回调,第二个是失败的回调。

切记

  1. 在安装了插件之后,千万记得要先ionic remove platform android,然后再执行ionic platform add android命令,不然插件不能正确的执行,事实上,每一次修改插件的内容,都要执行上面的两个操作,才能使插件正常运行
  2. 如果你使用sdk23版本进行打包的,你就要注意了,在最新的android6.0上面,和以前的权限授权机制已经不同,如果使用23版本的进行打包,在android6.0以上的手机上运行不会给出获取地理位置权限的弹窗,务必改为23以下的版本进行编译
  3. 获取成功的话,默认是只给出经纬度信息的,如果要获取定位的地址的具体信息,要在插件里面的BaiduLocation.java文件把
    option.setIsNeedAddress(false);
    改为
    option.setIsNeedAddress(true);
  4. 默认返回的是一个字符串,对于现在json这么流行的情况下,当然是获得json格式的数据比较让人喜欢,这个时候坐着已经替我们封装好了,只需要在BaiduLocation.java文件中把
    PluginResult pluginResult = new PluginResult(PluginResult.Status.OK, sb.toString());
    改为
    PluginResult pluginResult = new PluginResult(PluginResult.Status.OK, json.toString());,你就可以获得一个json格式的字符串了

最后

上面的内容大多数是在github上找到的,这里只是写上了自己遇到的一些问题,分享出来,这里附上github地址:GitHub地址

百度地图定位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
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值