如何计算现有折线上的 LatLng A 到 LatLng B?

How to calculate LatLng A to LatLng B on existing polyline?

我正在开发一个类似于位智或 Google 地图的 Android 应用程序。我已经有一条由 Direction API

填充的折线

现在我需要根据生成的折线计算从标记 A 到标记 B 的距离

我假设我可以通过循环折线坐标来计算距离,但标记位于折线坐标的中间。可以看到下面的距离,就是marker A和marker B之间的直线距离是不正确的。

有谁知道如何根据生成的折线计算标记 A 到标记 B 之间的距离?

任何帮助都会很棒!谢谢!有问题请追问

从生成从 Directions API 获得的折线的坐标列表中获取标记 A 坐标的索引以及标记 B 坐标的索引,然后循环,从标记 A 的索引开始并在市场 B 的索引处结束。使用下面的 gradle 代码下载 Google 地图实用程序库。

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 class 中获取的以下方法来获取标记点 A 和 B 的索引:

 Polyutil.locationIndexOnEdgeOrPath(LatLng point, java.util.List<LatLng> poly, boolean closed, boolean geodesic, double toleranceEarth)

使用以下选项:

  1. 关闭(假)
  2. 测地线(假)
  3. 公差地球 (0.01)