高德可以根据一组连续的 gps 位置信息计算距离吗?我本地连续记录当前 gps 位置信息 可以换算距离吗?
1
CloudnuY 2020-04-13 08:58:07 +08:00
|
2
sunjiayao 2020-04-13 09:05:38 +08:00
曾经弄过,但记不太清了。当时好像是通过路径导航+必经点 api 返回里是有距离的。如果只计算直线距离的话,用楼上发的「两点间的直线距离计算」就能实现了。
|
3
LaughingCat 2020-04-13 09:10:19 +08:00
|
4
opengps 2020-04-13 09:13:17 +08:00
我这里有工具,参考我的 json 模板替换下你的参数 https://www.opengps.cn/Map/Path/Index.aspx?from=v2ex
|
5
hws8033856 2020-04-13 10:30:43 +08:00
两坐标直线距离计算的算法网上大把,不需要高德提供 api 吧?
|
7
xuanbg 2020-04-13 10:42:08 +08:00
路径规划接口,传入途经点。
|
8
princelai 2020-04-13 10:46:56 +08:00 via Android
为什么非要用高德呢,Python 自己写,搜 haversine 距离或球面距离,或者直接用 geopy 包,自己写的话配合 numba 也很快,我就这么干的
|
9
ixx 2020-04-13 11:42:15 +08:00
看你怎么计算了 直接算两点距离有误差 还要看取点的频率 想要准确的话要保证取点频率不能太低
|
11
l0wkey 2020-04-13 12:06:00 +08:00
|
12
l0wkey 2020-04-13 12:07:42 +08:00
|
13
jorneyr 2020-04-13 12:12:36 +08:00
使用经纬度计算 2 点之间的距离
```java /** * 根据经纬度计算两点之间的距离 (m) */ public class LBSUtils { public static final double EARTH_RADIUS = 6378137; // 地球的半径 (m) /** * 根据经纬度计算两点之间的距离 (m) * * @param lng1 位置 1 的经度 * @param lat1 位置 1 的纬度 * @param lng2 位置 2 的经度 * @param lat2 位置 2 的纬度 * @return 返回距离 */ public static double getDistance(double lng1, double lat1, double lng2, double lat2) { double radLat1 = radian(lat1); double radLat2 = radian(lat2); double a = radLat1 - radLat2; double b = radian(lng1) - radian(lng2); double 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))); s = s * EARTH_RADIUS; s = Math.round(s * 100) / 100.0; return s; } private static double radian(double d) { return d * Math.PI / 180.0; } public static void main(String[] args) { double lat1 = 39.964145, lng1 = 116.384996, lat2 = 39.964533, lng2 = 116.385243; double distance = LBSUtils.getDistance(lat1, lng1, lat2, lng2); System.out.println("Distance: " + distance + " 米"); } } ``` |
15
duwan 2020-04-13 12:25:27 +08:00
jts 就可以计算,用不到高德
|
17
duwan 2020-05-18 10:14:01 +08:00
|