uniapp 计算经纬度距离方法
时间: 2023-09-20 07:11:12 浏览: 79
在uniapp中,可以使用Haversine公式计算两个经纬度之间的距离。以下是一个示例代码:
```javascript
// 计算两个经纬度之间的距离(单位:米)
function getDistance(lat1, lng1, lat2, lng2) {
const EARTH_RADIUS = 6378137.0; // 地球半径,单位:米
const PI = Math.PI;
const radLat1 = lat1 * PI / 180.0;
const radLat2 = lat2 * PI / 180.0;
const a = radLat1 - radLat2;
const b = lng1 * PI / 180.0 - lng2 * PI / 180.0;
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 * EARTH_RADIUS;
}
```
其中,`lat1`、`lng1`、`lat2`、`lng2`分别表示两个经纬度的纬度和经度。函数返回的是两个经纬度之间的距离,单位为米。
相关问题
uniapp获取经纬度
UniApp可以使用uni.getLocation()方法获取当前位置的经纬度。
示例代码:
```
uni.getLocation({
type: 'wgs84',
success: function (res) {
console.log('经度:' + res.longitude);
console.log('纬度:' + res.latitude);
},
fail: function (err) {
console.log(err);
}
});
```
其中,type参数指定获取的坐标系类型,可选值为"wgs84"和"gcj02",分别表示国际标准坐标系和中国国家测绘局坐标系。一般情况下,我们使用默认值"wgs84"即可。
成功获取到经纬度后,可以进行后续操作,比如使用地图SDK显示当前位置等。
uniapp计算两个经纬度之间的距离
在uniapp中,可以使用Haversine公式来计算两个经纬度之间的距离。Haversine公式是一种计算球面距离的方法,它基于地球上两点之间的经纬度计算出距离。
首先,需要将经纬度转换为弧度,因为Haversine公式中需要使用弧度来进行计算。可以使用以下代码将经纬度转换为弧度:
```javascript
function toRadian(degree) {
return degree * Math.PI / 180;
}
let lat1 = toRadian(latitude1);
let lon1 = toRadian(longitude1);
let lat2 = toRadian(latitude2);
let lon2 = toRadian(longitude2);
```
接下来,可以使用Haversine公式计算球面距离,使用以下代码实现:
```javascript
const R = 6371; // 地球半径,单位为千米
let dLat = lat2 - lat1;
let dLon = lon2 - lon1;
let a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
Math.cos(lat1) * Math.cos(lat2) *
Math.sin(dLon / 2) * Math.sin(dLon / 2);
let c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
let distance = R * c; // 距离,单位为千米
```
最后,可以使用uniapp中的弹窗或者控制台打印将距离显示出来,例如:
```javascript
uni.showModal({
title: '距离',
content: '两地距离为' + distance + '千米'
});
```
这样就可以在uniapp中计算并显示两个经纬度之间的距离了。注意,以上代码仅提供了基本的思路,具体实现还需要根据实际情况进行适当的修改和完善。