现在有个需求:每隔一段时间需向后台服务器返回当前用户的经纬度坐标.
ionic 官方提供的有定位插件cordova-plugin-geolocation,兼容ios和android版本,网上查资料说最新版的插件已经删除掉的Android版定位的代码,改为基于系统浏览器(chrome内核)进行定位。至于为什么这样做,也有人问过同样的问题,作者的回答是这样比原生定位更快更准确。经过调试,成功过,但是一段时间后就不能用了,提示信息主要就是说不能使用http的协议(非安全的协议),还有一部分人说是因为国内网络的问题,这个问题估计也是个原因吧...
于是乎去网上找适合安卓使用的定位插件: Cordova/ionic 百度定位Android版插件
- 首先申请百度地图android版sdk的appkey,需要用到安卓签名证书的sha1值+应用的包名(不清楚的同学百度ionic 安卓签名和ionic 包名,必须打包成release版,并对其进行签名在测试机上测试)
- 下载插件
ionic cordova plugin add https://github.com/mrwutong/cordova-qdc-baidu-location --variable API_KEY="你的ak码"
- 具体的使用可以查看官方插件仓库
- 调试:必须打包成release版,并对其进行签名在测试机上测试
使用中遇到的问题:
-
ReferenceError: baidu_location is not defined, 解决办法: 在使用之前 declare var baidu_location: any; 引入 baidu_location,详情请去网上搜索ionic 如何引入自定义的插件
-
获取坐标为5e-324, 解决办法:查看返回的locType是否为505(申请的appkey不合法或者没有对app进行签名),具体的定位返回错误码: Android 定位SDK定位 返回错误码
- 设备没有获取位置的权限, 解决办法:官方提供"ionic-native/android-permissions"插件,具体使用办法查看官方文档 Android Permissions