美文网首页
ionic3定位 (android)

ionic3定位 (android)

作者: 我代表咖啡 | 来源:发表于2018-06-29 16:00 被阅读0次

项目中需要定位功能,一开始使用了cordova-plugin-geolocation插件,但是报错了而且这个插件返回的是经纬度,没有街道信息,想要街道信息的话需要通过其他的API来转换。

然后又找了找,发现了百度的SDK

所用插件:cordova-plugin-baidumaplocation

上百度sdk申请android和ios(必须)的AK

图1.百度sdk申请

包名在android目录下的AndroidManifest.xml文件中(package)

图2.ionic3项目目录 图3.包名位置

发布版的sha1获取:

需要jdk的keytool工具,路径配置在环境变量的path后用逗号隔开,就可以在全局的cmd中用了

keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000

图4.控制台显示

执行上述命令后,会在项目目录下生成一个my-release-key.keystore文件

再执行 keytool -list -v -keystore my-release-key.keystore 输入口令后会打印出

图5.控制台显示

这里的sha1,就是发布版的sha1。到这android的ak就配置完了,ios的随便整一个。

插件下载:

Ionic cordova plugin add cordova-plugin-baidumaplocation --variable ANDROID_KEY="***" --variable IOS_KEY="***"

然后打包:

ionic cordova build android --release

然后签名:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore

F:/code/ionic_bd/platforms/android/build/outputs/apk/release/android-release-unsigned.apk

alias_name

图6.输入签名命令后控制台显示

因为我不会取开发版的sha1所以只有签名后的apk才能正常定位

核心代码:

在顶端声明:declare const baidumap_location: any; 

if (typeof baidumap_location === “undefined”)

    alert(“baidumap_location is undefined”); 

    return; 

}; 

baidumap_location.getCurrentPosition(function

(result) { 

    alert(JSON.stringify(result, null, 4)); 

}, function (error) { 

    alert(error); 

});

只在手机上好用,在浏览器会报undefined

提示:

中间遇到的坑

Android版本@7.0.0 插件版本@4.0.1

定位5e-324,返回的对象会报错,如下:

NetWork location failed because baidu

location service can not decrypt the request query, please check the so file !(原因不知道)

Android版本@6.4.0 插件版本@4.0.1

baidumap_location.getCurrentPosition()方法啥都没有,原因也不知道。

虽然原因不知道(听说是版本问题),但是有解决办法,什么办法呢?

就是降版本

Android版本@6.4.0 插件版本@3.2.0

一切正常

相关文章

网友评论

      本文标题:ionic3定位 (android)

      本文链接:https://www.haomeiwen.com/subject/rljayftx.html