使用微信的 jsapi 获取定位
const jweixin = require('jweixin-module')
reqWxSignature().then(r => {
let data = r.data
jweixin.config({
appId: data.appId,
timestamp: data.timestamp,
nonceStr: data.nonceStr,
signature: data.signature,
jsApiList: [ 'getLocation' ]
});
setTimeout(() => {
jweixin.getLocation({
type: 'wgs84',
success: (res) => {
this.curLngLat = { lat:res.latitude, lng:res.longitude };
},
fail:() => {
uni.showToast({ title:"获取定位失败" })
}
},500)
})
})
计算两个经纬度之间的直线距离
getDistance(point1, point2) {
const earthRadius = 6378137;
const radLat1 = point1.latitude * Math.PI / 180;
const radLat2 = point2.latitude * Math.PI / 180;
const a = radLat1 - radLat2;
const b = point1.longitude * Math.PI / 180 - point2.longitude * Math.PI / 180;
const s = 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)));
return s * earthRadius;
}
获取离我最近的站点
findNearestPoint(currentLat, currentLng, points) {
let minDistance = Infinity;
let nearestPoint = null;
for (let i = 0; i < points.length; i++) {
const point = points[i];
const distance = this.getDistance({latitude:currentLat,longitude:currentLng}, point);
if (distance < minDistance) {
minDistance = distance;
nearestPoint = point;
}
}
return nearestPoint;
},