ionic百度定位插件Android版实践

本插件利用百度地图提供的定位功能进行Android版手机定位。

为什么没有iOS版?

因为iOS版有官方的定位插件cordova-plugin-geolocation可以使用。

请参照:cordova-plugin-geolocation

Android版为什么不使用官方的cordova-plugin-geolocation插件

最新版的插件已经删除掉的Android版定位的代码,改为基于系统浏览器(chrome内核)进行定位。

为什么这样做,也有人问过同样的问题,作者的回答是这样比原生定位更快更准确。

但经过测试后,发现根本无法定位,几经调查发现跟貌似国内网络有关系,原因相信大家都懂的,此过省略好几个字。。。。

此插件就这么诞生了

版本

基于百度地图Android版定位SDK(v5.3)

一,申请密钥

请参照:http://lbsyun.baidu.com/index.php?title=android-locsdk/guide/key

二,安装插件

ionic plugin add https://github.com/liangzhenghui/cordova-qdc-baidu-location –variable API_KEY=””
注:此处的API_KEY来自于第一步,不带左右尖括号
注意:要确保项目电脑上安装了git命令才能安装这个插件,具体安装git方法自行百度不复杂
三,使用方法

A.切换返回的数据类型(在插件的src/android/BaiduLocaton.java)

PluginResult pluginResult = new PluginResult(PluginResult.Status.OK, sb.toString());//返回字段
PluginResult pluginResult = new PluginResult(PluginResult.Status.OK, json.toString());//返回json字符串

B.获取当前位置(在js控制器,或者serve中)

baidu_location.getCurrentPosition(function(data){
    var data = JSON.parse(data);
          alert(data)
    }, function(err){
          alert("错误:"+err) 
});

获得定位信息,返回JSON格式数据:

{
latitude : 纬度,
lontitude: 经度,

}
具体字段内容请参照:http://developer.baidu.com/map/reference/index.php

C.如何引用
因为当时也是新手,安装完插件一直在纠结在哪里引用,或者怎么引用。实际上不需要任何引用,安装完build成apk之后自动会被添加进入环境变量,在浏览器中调试undefined没有任何影响直接忽略。
在执行过程中也要确保定位方法在打开app时插件都加载完成之后再去调用。
四,百度定位和百度地图搭配使用
调用用百度地图要先引用百度api

<script type="text/javascript"src="http://api.map.baidu.com/apiv=2.0&ak=A796271dae48229367c041db82735a4c"></script>

注意:这里有个小坑,当你多次点击进入百度地图的时候,地图会出现显示不完整的问题,解决办法是给创建地图的js加一个$timeout 200毫秒,这样就可以等待dom渲染完,避免出现地图显示不完整。
五,查看当前安装了哪些插件

ionic plugin ls
六,删除插件

ionic plugin rm com.qdc.plugins.baidu.location

百度地图定位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
发出的红包

打赏作者

leason00

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值