本插件利用百度地图提供的定位功能进行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