uni-app获取当前位置并计算出某个地点距离

实现思路:先通过 uni.getLocation 接口获取当前位置获取当前位置,再与点击经纬度进行计算得出相差距离。

1.获取当前位置

需要先在manifest.json配置文件开启获取位置权限
uni-app获取当前位置并计算出某个地点距离_第1张图片

//获取当前位置
	getLocation() {
		let location = {
			lat: 0,
			lng: 0,
		}
		return new Promise((reserve, reject) => {//因为获取位置是异步接口所以需要使用promise
			uni.getLocation({
				success(res) {
					location.lat = res.latitude
					location.lng = res.longitude,
						reserve(location);
				},
				fail(err) {
					reject(location );//获取失败则返回经纬坐标为0
				}
			})
		})
	},

2.调用获取位置方法,计算距离

			//根据金纬度计算距离
			distance(lat1, lng1) {
				var that = this;
				console.log('计算地点经纬度:', lat1, lng1);

				this.$utils.getLocation().then((res) => {
					console.log('我的位置:', location);
					let lat2 = res.lat;
					let lng2 = res.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);
					console.log('距离:', s);
					return s;//返回距离
				});
			},

效果图

你可能感兴趣的:(js,uni-app)