uniapp使用腾讯地图组件

UNIAPP CHOOSELOCATION 在H5端定位不准确解决方案

标签: uni-app

前言

项目需要通过选取地址来获取经纬度,进而计算两点的距离。直接使用uni.chooseLoaction 发现偏差实在是太大。

解决方案

使用腾讯的 地图选点组件
传送门:地图组件 | 腾讯位置服务

第一步 申请KEY设置REFERER

注意:这里的应用名称填英文,我设置的中文,后面的链接填写referer的时候总是报错,换成英文就好了
申请key

第二步 UNIAPP页面

1.在需要获取位置信息的页面加个跳转
这里我们是跳转到webview页面去获取地址

2.在onload里面加个判断,解析返回的数据信息
当我们在webview页面获取信息之后还要跳转回当前页面,带着数据信息

onLoad(options) {
	if(options.loc){
		let loc = JSON.parse(options.loc);
		//做你的数据处理
	}
},
methods: {
	openAddres:function(){
		uni.redirectTo({
			url:"../getAddress/getAddress"
		})
	}
}

3.webview页面

<template>
	<view>
		<web-view src="https://apis.map.qq.com/tools/locpicker?search=1&type=1&key=your key&referer=your appname"></web-view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				
			}
		},
		onLoad(options) {
			window.addEventListener('message', event=> {
			  // 接收位置信息,用户选择确认位置点后选点组件会触发该事件,回传用户的位置信息
			    var loc = event.data;
				if (loc && loc.module == 'locationPicker') {
			        //防止其他应用也会向该页面post信息,需判断module是否为'locationPicker'
			        console.log('location', loc);
					uni.redirectTo({
						url:"../editAddress/editAddress?loc="+JSON.stringify(loc)
					})
				}
			}, false);
		},
		onHide() {
			window.removeEventListener();
		},
		methods: {
		}
	}
	
</script>

<style>

</style>

以上,完成,经测试。定位相当准确!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值