高德地图计算两坐标距离:Java、JS、MySQL实现

8 下载量 114 浏览量 更新于2024-09-01 2 收藏 64KB PDF 举报
"这篇文章主要介绍了如何使用Java、JavaScript(JS)和MySQL来计算高德地图中两个坐标点之间的距离。作者因为工作需求,研究并封装了自己的计算方法,以应对特定场景下不能直接使用高德地图SDK的情况。文章通过示例代码详细解释了各个语言的实现方式,对于需要进行地图坐标计算的开发者具有参考价值。" 高德地图是广泛使用的地图服务提供商之一,它提供了丰富的API和SDK供开发者使用。在某些情况下,如本文作者所遇到的,可能需要自定义方法来计算两个坐标点的距离。以下是使用Java、JavaScript和MySQL分别计算的方法: Java实现 在Java中,可以创建一个名为`LngLat`的类来存储经纬度,然后利用Haversine公式来计算地球表面上两点之间的大圆距离。Haversine公式考虑了地球的曲率,其基本思路是计算两点之间的纬度差和经度差的余弦平方和,然后取平方根。 ```java public class LngLat { public double latitude; public double longitude; // 省略构造函数和相关方法 public static double calculateDistance(LngLat point1, LngLat point2) { final int R = 6371; // 地球半径,单位为公里 double latDistance = Math.toRadians(point2.latitude - point1.latitude); double lonDistance = Math.toRadians(point2.longitude - point1.longitude); double a = Math.sin(latDistance / 2) * Math.sin(latDistance / 2) + Math.cos(Math.toRadians(point1.latitude)) * Math.cos(Math.toRadians(point2.latitude)) * Math.sin(lonDistance / 2) * Math.sin(lonDistance / 2); double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); double distance = R * c; return distance; } } ``` JavaScript实现 在JavaScript中,同样可以使用Haversine公式,但语法稍有不同: ```javascript function calculateDistance(point1, point2) { var R = 6371; // 地球半径,单位为公里 var dLat = (point2.lat - point1.lat) * Math.PI / 180; var dLon = (point2.lng - point1.lng) * Math.PI / 180; var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(point1.lat * Math.PI / 180) * Math.cos(point2.lat * Math.PI / 180) * Math.sin(dLon / 2) * Math.sin(dLon / 2); var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); var distance = R * c; return distance; } ``` MySQL实现 在MySQL中,可以使用`ST_Distance_Sphere`函数来计算两点间的距离,这个函数基于球体模型计算两点间的弧度距离。假设我们有一个包含经纬度的表`locations`,列名为`lat`和`lng`: ```sql SELECT ST_Distance_Sphere( POINT(location1.lat, location1.lng), POINT(location2.lat, location2.lng) ) / 1000 AS distance_in_km FROM locations AS location1, locations AS location2 WHERE ... ``` 这将返回两个坐标点之间的距离,单位为千米。 总结来说,计算高德地图上两点之间的距离可以通过多种编程语言实现,关键在于理解地理坐标系统和适当的数学公式。对于Java和JavaScript,可以自定义方法实现Haversine公式;在MySQL中,可以直接利用内置的`ST_Distance_Sphere`函数。这些方法都可以帮助开发者在没有直接使用高德地图SDK的情况下,解决计算地图上两点间距离的问题。
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部