uniapp使用高德地图实现选择地址 h5版本

前传:很恶心!!做的时候很想掀桌子,但是忍住了,只能怪自己技术不到位,因为这个东西我搞了两天,是的,就只是选择地址而已,我做了两天......下辈子不要做前端了

1、首先需要打开高德地图创建一个应用

高德地图传送门:我的应用 | 高德控制台

一共要创建两个 一个【web端】 一个【web服务】(web服务看情况决定是否需要添加,下面有说明)

【web】端用于填入uniapp做【web配置】的校验,不填的话用不了地图的哦,所以这一步是必须的

【web服务】则是用来反查用户选择的定位信息(比uni.chooseLocation更详细一些,如果觉得uni.chooseLocation够用那就不需要做这一步,可以直接跳过)

2、打开manifest.json找到web配置 下滑到定位和地图,把你申请的【web端】的key和密钥填入

3、打开HBuilderx 随便写个按钮,直接看代码示例

注意:uni.chooseLocation是需要经纬度的,如果你已经有经纬度直接把值赋进去就可以了,如果没有请往下拉。(我就是没有传经纬度导致我地图一直白屏...服了...害我一个地址搞了两天...)

<template>
	<view class="">
		<button @click="getLocation()">获取当前的位置</button>
	</view>
</template>

<script>
	export default {
		data() {
			return {

			}
		},
		onLoad() {

		},
		methods: {
			getLocation() {
				uni.chooseLocation({
					latitude: getApp().globalData.lat,
					longitude:getApp().globalData.lng,
					success(res) {
						console.log('res', res);
					}
				})
			}
		}

	}
</script>

点击按钮后h5的地图就出来了

2.1 地图

2.2点击地址返回的数据

注意:此时是没有返回省市区的 只是返回了地图上主内容和副内容以及经纬度,由于我是做收货地址 需要给后端更多的字段,所以我是需要反查的,看代码,在原有的基础上加一个function,用于反查

2.3反查详细地址(直接把你从uni.chooseLocation获取到的经纬度传入就可以了)

// 转地址
turnAdrr(longs, lat) {
    // longs-纬度 lat-经度
	let _key = '你申请的【web服务】的key'; 
	uni.request({
			method: 'GET',
			url: 'https://restapi.amap.com/v3/geocode/regeo?parameters',
			data: {
				key: _key,
				location: `${longs},${lat}`,
				output: 'JSON'
			},
			success: async (res) => {
				console.log('用户所在的地理位置信息',res);
				//用户所在的地理位置信息
			},
			fail: r => {
				console.log(r);
			}
		});
}

反查出来的更详细的地址

撒花 结束!!!!!!!!!!!!!!!!!!!!!!!!!!!!

4、这里是查当前的经纬度的(不需要可以不用看这部分了)

uni.getLocation({
	type: 'wgs84',
	success: function(res) {
		console.log('当前位置的经度:' + res.longitude);
		console.log('当前位置的纬度:' + res.latitude);
	},
});

注意:调试的时候最好不要用谷歌浏览器,国内可能获取位置失败,也不会用IP去测试,直接使用去访问localhost,详情见uniapp官网

传送门:uni.getLocation(OBJECT) | uni-app官网

至此,整个定位结束。

我觉得我写的很详细了,但都是我自己的理解,如果有问题请留言

如果你使用uni.getLocation无回调或者报getLocation:fail Geolocation permission denied.Get ipLocation failed.可查看我的另一篇文章

传送门:uniapp h5 (变相)解决getLocation:fail Geolocation permission denied.Get ipLocation failed.-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值