小程序根据经纬度计算两点距离
封面图
•
2025-11-03
•
小程序
235
0
0
0
在小程序中(如微信小程序、支付宝小程序等),你可以使用 JavaScript 的 `Math` 函数来根据经纬度计算两点之间的直线距离。通常使用 **Haversine 公式** 来计算两个地理坐标点之间的球面距离。 --- ### ✅ Haversine 公式简介 Haversine 公式可以用来计算地球上两点之间的最短距离(大圆弧)。公式如下: $$ a = \sin^2\left(\frac{\Delta \phi}{2}\right) + \cos(\phi_1) \cdot \cos(\phi_2) \cdot \sin^2\left(\frac{\Delta \lambda}{2}\right) $$ $$ c = 2 \cdot \text{atan2}(\sqrt{a}, \sqrt{1-a}) $$ $$ d = R \cdot c $$ 其中: - $ \phi $ 是纬度(以弧度为单位) - $ \lambda $ 是经度(以弧度为单位) - $ R $ 是地球半径,约为 6371 公里 --- ### 📌 小程序中实现代码(JavaScript) ```javascript // 计算两点之间的距离(单位:公里) function getDistanceFromLatLonInKm(lat1, lon1, lat2, lon2) { const R = 6371; // 地球半径,单位:公里 const dLat = deg2rad(lat2 - lat1); const dLon = deg2rad(lon2 - lon1); const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.sin(dLon / 2) * Math.sin(dLon / 2); const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); const d = R * c; // 距离,单位:公里 return d; } // 将角度转换为弧度 function deg2rad(deg) { return deg * (Math.PI / 180); } ``` --- ### 🧪 示例用法 ```javascript const lat1 = 39.9042; // 北京纬度 const lon1 = 116.4074; // 北京经度 const lat2 = 31.2304; // 上海纬度 const lon2 = 121.4737; // 上海经度 const distance = getDistanceFromLatLonInKm(lat1, lon1, lat2, lon2); console.log("两点之间距离:" + distance.toFixed(2) + " 公里"); ``` --- ### ⚠️ 注意事项 - 如果你需要的是“步行/驾车”距离,那么需要调用地图 API(如高德地图、百度地图、腾讯地图等)的路径规划接口。 - Haversine 公式是近似值,适用于全球范围内的短距离(几十公里以内)。 - 纬度和经度应以十进制度数形式提供。 --- 如果你是在 **微信小程序** 或 **支付宝小程序** 中使用,这个函数可以直接放在 JS 文件中调用。 如需进一步封装成工具类或组件,也可以告诉我,我可以帮你写更完整的结构。
上一篇:
领带的分类
下一篇:
微信小程序-消息提示框实例
标题录入,一次不能超过6条
返回顶部
留言
留言
评论