高德地图计算两坐标距离:Java、JS、MySQL实现
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的情况下,解决计算地图上两点间距离的问题。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2022-09-23 上传
2024-06-11 上传
2024-03-30 上传
443 浏览量
2023-04-23 上传
7004 浏览量

weixin_38722944
- 粉丝: 3

最新资源
- Java人才管理系统的开发与应用
- La Fonda餐厅优雅简约的单页设计项目
- 西北工业大学3D编程指南:虚拟环境的真实再现
- 广工计算机组成原理实验报告汇总(含算术逻辑运算器详解)
- 东大推荐:C语言在嵌入式系统中的进阶指南
- 黑莓8830专用网络阅读装机软件
- 深入理解Spring Timer定时器的应用实例
- VMware Horizon Client 4.7.0发布,客户端下载指南
- 超级WinPE工具:0PE.ISO的极致压缩体验
- Spacialite x86全套依赖DLL库下载
- 友盟消息推送工具类实现:单播、组播、广播
- C语言实现数据挖掘经典算法Apriori
- Udacity数据科学项目:信用风险评估分析
- TMSComponentPack v8.5.1.0全源码版发布
- Tekton管道与Github Workers集成:构建容器化应用
- Struts2 用户登录功能实现教程