在使用 (uni.getLocation) type 为 wgs84 时这个是uni 内部提供的方法我们可以获取到我们想要的信息,在想要获取详细地理位置时 type 必须为 gcj02 这时可以使用 address 这个字段(只有在App 端才可以使用)
uni.getLocation({
type: "gcj02",
geocode: true,
success: (res) => {
console.log(res.address) // 当前详细位置信息
},
想要获取当前位置的详细信息的必须配置高德地图的 SDK
首先我们先去高德开放平台申请 key
根据自己的需求的选择
接下来就是如何去申请 SHA1 安全码
配置 Java 环境,已配置请跳过
根据自己的电脑配置去选择
下载完成后解压
开始配置环境变量
一定要放在最前面
检验是否安装成功,运行 cmd ,输入 java -version
备注:如果电脑上安装了多个版本的JRE,其版本之间会发生冲突,导致服务不能正常启动,可以查看该链接下的文档,清理多余版本的JRE,使服务正常启动。
运行 cmd 切换到安装盘下
set PATH=%PATH%;"C:\Program Files\Java\jre1.8.0_201\bin
使用 keytool -genkey 命令生成证书
keytool -genkey -alias fs -keyalg RSA -keysize 2048 -validity 36500 -keystore fs.key
注意: fs:是证书的别名! 36500是证书有效时间:100年,自行设置! fs.key是证书名!
设置密匙库口令,就是设置证书密码(输入过程不会显示,输入完成直接回车)
最后 y 完成
在你所选择的盘下会生成 fs.key 文件
查看证书具体信息
keytool -list -v -keystore fs.key
输入密码查看详细信息
- MD5
证书的MD5指纹信息(安全码MD5) - SHA1
证书的SHA1指纹信息(安全码SHA1) - SHA256
证书的SHA256指纹信息(安全码SHA245)
去打包设置包名,证书别名看你自己设置的,选择证书文件位置
生成 高德地图的 key
配置项目文件
ios 单独申请需要 ios 开发者证书
都配置完成后使用手机去查看
以下代码中包括未获取到定位授权弹出框
uni.getLocation({
type: "gcj02",
geocode: true,
success: ({ address: res }) => {
let arr = res["city"].split("")
let str = ""
arr.filter(item => {
str += item.indexOf("市") === -1 ? item : ""
})
this["city"] = str
},
fail: (error) => {
uni.showModal({
title: "提示",
content: "获取定位失败,是否授权打开定位",
success: (res) => {
if (res["confirm"]) {
uni.getSystemInfo({
success: (sys) => {
if (sys["platform"] === "ios") {
plus.runtime.openURL("app-settings://")
} else {
let main = plus.android.runtimeMainActivity()
let Intent = plus.android.importClass("android.content.Intent")
let mIntent = new Intent("android.settings.LOCATION_SOURCE_SETTINGS")
main.startActivity(mIntent)
}
}
})
}
}
})
}
})
完结!!!