uniapp定位和获取距离

文章描述:

uniapp定位当前位置和计算终点位置距离

template

循环渲染

<template>
    <view class="content">
		<view v-for="(item,index) in dataList" :key="index">
			<view>距离:{{item.jl}} 经纬度:{{item.location}}</view>
		</view>
    </view>
</template>

script

这里当前定位经纬度是写成了固定的

export default {
    data() {
        return {
			// 当前定位
			location:{
				lat:'30.654342',
				lng:'104.080714'
			},
			// x经度longitude,y纬度latitude
			dataList:[
				{location:'104.081876,30.503852'}, // 成都 - 金地天府城
				{location:'106.10668,30.825124'},  // 南充 - 果州丽府
			],
			
        }
    },
	onShow() {
		this.dataList.forEach(item => {
			var s = this.distance(item.location.split(',')[1], item.location.split(',')[0])   //调用计算方法(经度,纬度)传值
			this.$set(item, 'jl', s)   //把距离存储到dataList中
		})
		
		console.log(this.dataList)
	},
    methods: {
		
		//根据金纬度计算距离
		distance(lat1, lng1) {
			var that = this;
			let lat2 = that.location.lat;
			let lng2 = that.location.lng;
			let rad1 = lat1 * Math.PI / 180.0;
			let rad2 = lat2 * Math.PI / 180.0;
			let a = rad1 - rad2;
			let b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;
			let s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(rad1) *
			Math.cos(
				rad2) * Math.pow(
				Math.sin(b / 2), 2)));
			s = s * 6378.137;
			s = Math.round(s * 10000) / 10000;
			s = s.toString();
			s = s.substring(0, s.indexOf('.') + 2);
			return s
		},
		initPage: async function() {
			this.location = await this.getLocation()
			this.getList()
		}

	}
    //...
}

 

 

Hbuilder里面设置微信小程序 → 位置接口

微信小程序→开发→开发管理→接口设置

wx.getLocation审核不通过,建议使用wx.getFuzzyLocation、wx.chooseLocation或wx.choosePoi、wx.chooseAddress接口实现上述场景。

 

发布时间:2023/01/13

发表评论