CocosCreator接入高德地图sdk获取经纬度信息图文详解
先看效果
1.首先去 高德开放平台.申请key
接下来该获取发布版和调试版的SHA1了,首先打开cmd命令窗口
输入命令:cd .android(首先进入用户系统的安卓文件夹)
然后输入命令:keytool -list -v -keystore debug.keystore
然后会提示输入密码,输入:android 然后回车注意:这个时候输入密码是不会显示的,输入完成以后直接回车就好,这个时候就可以看到这个时候就得到了调试版的SHA1,如下图
接下来是发布版的SHA1,我是用的Android studio来获取的,首先打开Android studio导入打开工程,选择Build,然后Generate Signed Bundle/APK
然后选择APK,Next
这个时候我们需要用到的jks文件已经输出好了,找到刚才自己定义的输出文件夹
这个时候再次打开cmd命令台重复调试版,输入cd .android进入安卓文件夹,然后输入命令keytool -list -v -keystore D:\Android\AndroidKey\test.jks(完整版文件路径),然后输入密码:android,然后回车
至此两个版本的SHA1全部获取完毕,接下来就是包名,包名就是自己打包apk文件是的包名,然后提交
提交后会得到key,到时配置sdk时会用到,记下来
至此前期全部准备工作全部完毕,接下来该写代码了
首先是js客户端代码
cc.Class({
extends: cc.Component,
properties: {
label: {
default: null,
type: cc.Label
},
// defaults, set visually when attaching this script to the Canvas
text: 'Hello, World!',
},
// use this for initialization
onLoad: function () {
this.label.string = this.text;
if (cc.sys.isNative && cc.sys.os == cc.sys.OS_ANDROID) {
this.schedule(() => {
this.onGetLocation();
}, 3)
}
},
onGetLocation() {
var localtionInfo = jsb.reflection.callStaticMethod("org/cocos2dx/javascript/AppActivity", "getLocationInfo", "()Ljava/lang/String;");
if (!localtionInfo ) {
cc.log("当前无返回!!!!!!!!!!!!!!!!!!!!!!!!");
return
}
this.label.string = "拿到位置信息\n:" + localtionInfo ;
},
把下载的高德sdk的jar文件导入到Android studio工程目录下app文件夹下的libs文件夹下,如果没有,则新建一个libs文件夹,如下图
然后配置AndroidManifest.xml文件权限
<!-- Normal Permissions 不需要运行时注册 -->
<!-- 获取运营商信息,用于支持提供运营商信息相关的接口 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位 -->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION"/>
<!-- 请求网络 -->
<uses-permission android:name="android.permission.INTERNET"/>
<!-- 不是SDK需要的权限,是示例中的后台唤醒定位需要的权限 -->
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<!-- 需要运行时注册的权限 -->
<!-- 用于进行网络定位 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<!-- 用于访问GPS定位 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<!-- 用于提高GPS定位速度 -->
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>
<!-- 写入扩展存储,向扩展卡写入数据,用于写入缓存定位数据 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!-- 读取缓存数据 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<!-- 用于读取手机当前的状态 -->