1
christin 2022-12-01 09:36:11 +08:00 via iPhone
你说的收货地址距离是快递那种全国内的还是外卖那种一个区内的?
|
3
Cheons 2022-12-01 09:43:09 +08:00 via Android
外卖好像只是计算商家和用户、骑手和用户的直线距离。派单是另外的算法。
|
5
christin 2022-12-01 09:48:30 +08:00 via iPhone 1
@Lexgni
如果是外卖的话我记得显示的都是预估时间吧,因为同一段路不同时间点走拥堵程度是不一样的。 美团公开过时间预估模型,你可以参考一下 https://mp.weixin.qq.com/s/LgXP2IRbyidRSSH9U7q5RQ https://tech.meituan.com/2019/02/21/meituan-delivery-eta-estimation-in-the-practice-of-deep-learning.html 如果你要的是距离的话可以考虑接入地图平台。 |
6
opengps 2022-12-01 09:53:33 +08:00
直线距离直接程序里用球面公式计算就行,路线距离调用地图厂商接口
|
7
xintianyou 2022-12-01 09:56:12 +08:00
@opengps 嗯 这个靠谱
|
9
yxzblue 2022-12-01 10:58:26 +08:00
地图厂商 SDK 计算骑行距离
|
10
kingjpa 2022-12-01 11:57:29 +08:00 2
外卖都是接入 地图提供的计算平台。 两坐标直接返回 道路距离和时间。
你自己算就图个乐, 立交桥下掉头,修路什么的,真自己算。 用户和 骑手 一起骂 |
11
Jooooooooo 2022-12-01 12:22:51 +08:00
两点距离确实是缓存住的, 一直实时去算肯定不行.
|
12
cwliang 2022-12-01 12:49:04 +08:00
turf.js
|
13
zoharSoul 2022-12-01 13:36:38 +08:00
为什么要删除?
|
14
XXWHCA 2022-12-01 14:39:43 +08:00
一般都是直线距离,像外卖都是直线距离,如果是导航需要用到路径规划这些,两个需求需要的算力是没办法比的
|
18
sheeta 2022-12-01 15:03:31 +08:00
@Lexgni 用这个,java 版的 turf, https://docs.mapbox.com/android/java/guides/turf/
|
19
xiaohundun 2022-12-01 15:21:55 +08:00
两点间直线距离,是这种么?
public static Double distance(String lat, String lng, String lat2, String lng2) { if (StringUtils.isBlank(lat) || StringUtils.isBlank(lng) || StringUtils.isBlank(lat2) || StringUtils.isBlank(lng2)) { return 0d; } double d = 6378.138 * 2 * Math.asin(Math.sqrt(Math.pow(Math.sin((Double.parseDouble(lat) * Math.PI / 180 - Double.parseDouble(lat2) * Math.PI / 180) / 2), 2) + Math.cos(Double.parseDouble(lat) * Math.PI / 180) * Math.cos(Double.parseDouble(lat2) * Math.PI / 180) * Math.pow(Math.sin((Double.parseDouble(lng) * Math.PI / 180 - Double.parseDouble(lng2) * Math.PI / 180) / 2), 2))); BigDecimal bigDecimal = new BigDecimal(d); return bigDecimal.setScale(2, RoundingMode.HALF_UP).doubleValue(); } |
20
iosyyy 2022-12-01 15:29:16 +08:00
地址距离实际上有经度纬度一般直接算或者有地图厂商的 api 就行吧 例如 https://www.imooc.com/article/322807
|
21
Lexgni OP @xiaohundun 是的
|