uniapp定位距离
uniapp获取定位距离的方法
在uniapp中计算两点之间的定位距离,可以通过H5或小程序原生API获取经纬度后,使用Haversine公式计算。以下是具体实现方式:
获取当前位置经纬度
使用uniapp的uni.getLocation方法获取当前位置坐标:

uni.getLocation({
type: 'wgs84',
success: function (res) {
const currentLat = res.latitude
const currentLng = res.longitude
// 获取到当前位置坐标后,可与其他坐标计算距离
}
})
Haversine距离计算公式 根据两点经纬度计算直线距离(单位:米):

function getDistance(lat1, lng1, lat2, lng2) {
const radLat1 = lat1 * Math.PI / 180.0
const radLat2 = lat2 * Math.PI / 180.0
const a = radLat1 - radLat2
const b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0
let distance = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2) +
Math.cos(radLat1)*Math.cos(radLat2)*Math.pow(Math.sin(b/2),2)))
distance = distance * 6378.137 * 1000
return Math.round(distance)
}
计算与目标位置距离
假设目标位置坐标为targetLat, targetLng:
const distance = getDistance(currentLat, currentLng, targetLat, targetLng)
console.log('两点距离:', distance, '米')
注意事项
- 需要配置manifest.json中的定位权限
- iOS需在隐私描述中添加定位用途说明
- 高精度定位需要GPS支持,室内可能误差较大
- 部分国产安卓机需要动态申请定位权限
扩展方案
对于需要持续计算距离的场景(如运动轨迹),建议:
- 使用
uni.onLocationChange监听位置变化 - 加入防抖处理避免频繁计算
- 使用地图组件的测距功能(如高德/百度地图SDK)可获得更高精度






