一、代码部分
1.1. 获取当前位置和经纬度信息(需要配置高的SDK)
调用uni-app官方API中的uni.chooseLocation(),即打开地图选择位置。
<button @click="getAddress">获取定位</button>
const getAddress = () => {
uni.chooseLocation({
success: res => {
console.log(res);
console.log('位置名称:' + res.name);
console.log('详细地址:' + res.address);
console.log('纬度:' + res.latitude);
console.log('经度:' + res.longitude);
}
});
}
- res打印结果如下
{
"name": "雨花街道民智路12-5号南京证大喜玛拉雅中心",
"latitude": 31.964383,
"longitude": 118.804811,
"address": "江苏省南京市雨花台区雨花街道民智路12-5号南京证大喜玛拉雅中心",
"errMsg": "chooseLocation:ok"
}
1.2. 如果只是简单获取经纬度信息uni.getLocation即可满足条件
const getAddress = () => {
uni.getLocation({
type: 'wgs84',
success: function(res) {
console.log(res);
},
fail: function(error) {
console.error('获取位置失败:', error);
}
});
}
- res打印结果如下
{
"type": "wgs84",
"altitude": 0,
"latitude": 31.966442,
"longitude": 118.799641,
"speed": 0.036327,
"accuracy": 32,
"errMsg": "getLocation:ok"
}
1.3. 如果需要获取省市区以及区域编码(需要配置高的SDK)
// 获取经纬度 省市区 详细地址
const chooseLocation = () => {
uni.getLocation({
// gcj02 返回国测局坐标(App 和 H5 需配置定位 SDK 信息才可支持 gcj02。)
type: 'gcj02',
// 是否解析地址信息(仅App平台支持(安卓需指定 type 为 gcj02 并配置三方定位SDK))
geocode: true,
success: function(res) {
console.log(res);
}
});
}
- res打印结果如下
{
"type": "gcj02",
"altitude": 0,
"latitude": 31.96437,
"longitude": 118.804836,
"speed": 0,
"accuracy": 34,
"address": {
"country": "中国",
"province": "江苏省",
"city": "南京市",
"district": "雨花台区",
"street": "民智路",
"streetNum": "12-2号",
"poiName": "喜玛拉雅中心C座",
"cityCode": "025"
},
"errMsg": "getLocation:ok"
}
二、生成高德地图的key
-
登录高德开放平台 ,https://console.amap.com/dev/key/app
-
找到“我的应用”

- 创建新应用,添加
key。 - 选择
Android平台的话需要多填写一个SHA1安全码的信息,iOS不需要填写。

2.1. 发布版安全码SHA1如何获取
- 参考如下地址:
https://blog.csdn.net/qq_44741577/article/details/139090838?spm=1001.2014.3001.5501
2.2. 包名如何获取
- uniapp->发行->原生App云打包

- 这里就看到了

2.3. 信息填好,提交就获取到了key。

三、模块配置
3.1. 配置Geolocation(定位)
- 我这里不需要ios的定位

3.1.1. 如何获取高德用户名
-
找到个人中心

-
用户名如下

3.2. Maps(地图)配置
这里的ios的key我没生成(需要苹果系统),但是配置文件又是必填,我瞎写了一个,不影响Android端使用

四、解决uniapp打包后uni.chooseLocation调用地址列表空白并转圈,搜索框无反应
4.1. 如果是使用云端证书
注意:
- 必须保证在生成高德
key的时候,发布版的SHA1的值和Dcloud项目云端证书的的SHA1的值相同,否则打包好的app,打开地图会一直处在加载中的状态- 必须保证高德地图申请
key的包名和uniapp打包时的包名一致。
-
如何查看云端证书的SHA1,详解查看如下链接:
https://blog.csdn.net/qq_44741577/article/details/139155101?spm=1001.2014.3001.5501 -
如何查看包名

4.2. 如果是使用自有证书
- 要获取如下三个信息

4.2.1. 证书别名、证书私钥密码、证书文件地址 分别如何获取?
-
下面以为自己为例
-
我的证书的生成命令是:
keytool -genkeypair -alias android -keysize 2048 -validity 36500 -keyalg RSA -keystore D:\keystore\apk.keystore
这个命令中的参数的意思为:
- -genkeypair:生成一对非对称密钥(可选
-genkey)。- -alias:指定条目以及密钥对的别名,该别名是公开的。
- -keysize 2048指定证书大小
- -validity 36500指定证书有效期
- -keyalg:指定加密算法,本例中采用通用的RSA算法。
- -keystore:设定密钥库文件的存放路径以及文件名字。(存放路径
D:\keystore\不写,默认存储到你当前cmd执行的目录)
- 那么查询证书信息的命令就是:
keytool -list -v -keystore D:\keystore\apk.keystore

根据以上信息可得出
- 证书别名:
android- 证书私钥密码: 就是你生生成证书的时候填写密码
- 证书文件地址:
D:\keystore


3886

被折叠的 条评论
为什么被折叠?



