如何在现有折线上计算 LatLng A 到 LatLng B?
Posted
技术标签:
【中文标题】如何在现有折线上计算 LatLng A 到 LatLng B?【英文标题】:How to calculate LatLng A to LatLng B on existing polyline? 【发布时间】:2021-01-20 01:02:43 【问题描述】:我正在开发一款类似于 Waze 或 Google Maps 的 android 应用。我已经有一个由 Direction API 填充的折线
现在我需要根据生成的折线计算从标记 A 到标记 B 的距离
我假设我可以通过循环折线坐标来计算距离,但标记位于折线坐标的中间。可以看到底部的距离,即标记 A 和标记 B 之间的直线距离,这是不正确的。
有谁知道如何根据生成的折线计算标记 A 到标记 B 之间的距离?
任何帮助都会很棒!谢谢!有什么问题请追问
【问题讨论】:
这能回答你的问题吗? Find distance between two points on map using Google Map API V2 @AndriiOmelchenko 你指的是 SphericalUtil.computeDistanceBetween() 函数?不。我不希望获得点 A 到点 B 之间的直线距离。就像我在问题中提到的那样,我想要基于方向/折线的点 A 到点 B 之间的距离 【参考方案1】:从生成从 Directions API 获取的折线的坐标列表中获取标记 A 坐标的索引以及标记 B 坐标的索引,然后循环,从标记 A 的索引开始并在市场 B. 使用下面的 gradle 代码下载 Google maps utils 库。
dependencies
// KTX for the Maps SDK for Android library
implementation 'com.google.maps.android:maps-ktx:2.1.3'
// KTX for the Maps SDK for Android Utility Library
implementation 'com.google.maps.android:maps-utils-ktx:2.1.3'
// It is recommended to also include the latest Maps SDK and/or Utility Library versions
// as well to ensure that you have the latest features and bug fixes.
implementation 'com.google.android.gms:play-services-maps:17.0.0'
implementation 'com.google.maps.android:android-maps-utils:2.0.3'
然后您可以使用从上述库的 PolyUtil 类中获取的以下方法来获取标记点 A 和 B 的索引:
Polyutil.locationIndexOnEdgeOrPath(LatLng point, java.util.List<LatLng> poly, boolean closed, boolean geodesic, double toleranceEarth)
使用以下选项:
-
关闭(假)
测地线(假)
toleranceEarth (0.01)
【讨论】:
以上是关于如何在现有折线上计算 LatLng A 到 LatLng B?的主要内容,如果未能解决你的问题,请参考以下文章
如何将字符串从共享首选项转换为 MutableList<LatLng> 对以在 kotlin 中绘制折线?
Google地图折线:标记包含所点击的LatLng的两个折线坐标
错误:InvalidValueError:setCenter:不是 LatLng 或 LatLngLiteral:在属性 lat:不是数字
错误:InvalidValueError:setCenter:不是LatLng或LatLngLiteral:在属性lat中:不是数字