IT评测·应用市场-qidao123.com
标题:
【JS】js计算地图两个经纬度坐标点范围(java同样处理),哈夫辛公式
[打印本页]
作者:
自由的羽毛
时间:
2025-2-21 15:03
标题:
【JS】js计算地图两个经纬度坐标点范围(java同样处理),哈夫辛公式
判断一个点 A (其经纬度为lat1,lon1) 是否在另一个点 B (其经纬度为 lat2,lon2) 的方圆 n 米之内,可以利用地球上经纬度之间的距离计算公式。常用的方法是
哈夫辛公式
(Haversine Formula),它可以计算两个点之间的球面距离。
哈夫辛公式
计算过程如下
1、将经纬度转换为弧度。
2、算两个点之间的距离。
3、判断计算得到的距离是否小于或即是n。
公式:
其中:
1、r 是地球的半径,约即是 6371 公里(或 6371000 米)。
2、d 是两点之间的距离。
实现示例(JavaScript)
以下是 JavaScript 中实现这种判断的方法:
function isPointWithinRange(lat1, lon1, lat2, lon2, range) {
const toRadians = (degree) => degree * (Math.PI / 180); // 角度转弧度
// 将经纬度转为弧度
const lat1Rad = toRadians(lat1);
const lon1Rad = toRadians(lon1);
const lat2Rad = toRadians(lat2);
const lon2Rad = toRadians(lon2);
// 哈夫辛公式
const dLat = lat2Rad - lat1Rad;
const dLon = lon2Rad - lon1Rad;
const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
Math.cos(lat1Rad) * Math.cos(lat2Rad) *
Math.sin(dLon / 2) * Math.sin(dLon / 2);
const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
const R = 6371000; // 地球平均半径,单位为米
const distance = R * c; // 计算出来的距离
// 判断是否在范围内
return distance <= range;
}
// 示例
const latA = 39.9042; // A点纬度
const lonA = 116.4074; // A点经度
const latB = 39.9088; // B点纬度
const lonB = 116.3973; // B点经度
const range = 1000; // 范围 1000 米
const result = isPointWithinRange(latA, lonA, latB, lonB, range);
console.log(result); // 输出 true 或 false
复制代码
代码表明
1、toRadians(degree):将角度转换为弧度。
2、经纬度转换:将lat1,lon1,lat2,lon2 从度数转换为弧度。
3、计算距离:利用哈夫辛公式计算出两点之间的距离。
4、返回判断:如果计算出来的距离小于或即是指定范围 n,返回 true
注意事项
经纬度的范围是:
纬度 lat: -90° 到 90°
经度 lon: -180° 到 180°
确保传入的经纬度和范围是有效的,以避免计算错误。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/)
Powered by Discuz! X3.4