当前位置:   article > 正文

uniapp获取当前位置和经纬度信息(app端高德地图)_uniapp获取经纬度

uniapp获取经纬度

一、代码部分

1.1. 获取当前位置和经纬度信息(需要配置高的SDK)

调用uni-app官方API中的uni.chooseLocation(),即打开地图选择位置。

<button @click="getAddress">获取定位</button>
  • 1
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);
		}
	});
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • res打印结果如下
{
    "name": "雨花街道民智路12-5号南京证大喜玛拉雅中心",
    "latitude": 31.964383,
    "longitude": 118.804811,
    "address": "江苏省南京市雨花台区雨花街道民智路12-5号南京证大喜玛拉雅中心",
    "errMsg": "chooseLocation:ok"
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

1.2. 如果只是简单获取经纬度信息uni.getLocation即可满足条件

const getAddress = () => {
	uni.getLocation({
		type: 'wgs84',
		success: function(res) {
			console.log(res);
		},
		fail: function(error) {
			console.error('获取位置失败:', error);
		}
	});
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • res打印结果如下
{
    "type": "wgs84",
    "altitude": 0,
    "latitude": 31.966442,
    "longitude": 118.799641,
    "speed": 0.036327,
    "accuracy": 32,
    "errMsg": "getLocation:ok"
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

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);
		}
	});
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 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"
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

二、生成高德地图的key

在这里插入图片描述

  • 创建新应用,添加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打包时的包名一致。

4.2. 如果是使用自有证书

  • 要获取如下三个信息

在这里插入图片描述

4.2.1. 证书别名、证书私钥密码、证书文件地址 分别如何获取?

  • 下面以为自己为例

  • 我的证书的生成命令是:

keytool -genkeypair -alias android -keysize 2048 -validity 36500 -keyalg RSA -keystore D:\keystore\apk.keystore
  • 1

这个命令中的参数的意思为:

  • -genkeypair:生成一对非对称密钥(可选-genkey)。
  • -alias:指定条目以及密钥对的别名,该别名是公开的。
  • -keysize 2048指定证书大小
  • -validity 36500指定证书有效期
  • -keyalg:指定加密算法,本例中采用通用的RSA算法。
  • -keystore:设定密钥库文件的存放路径以及文件名字。(存放路径D:\keystore\不写,默认存储到你当前cmd执行的目录)
  • 那么查询证书信息的命令就是:
keytool -list -v -keystore D:\keystore\apk.keystore
  • 1

在这里插入图片描述

根据以上信息可得出

  • 证书别名: android
  • 证书私钥密码: 就是你生生成证书的时候填写密码
  • 证书文件地址: D:\keystore

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/828822
推荐阅读
相关标签
  

闽ICP备14008679号