使用一系列点数计算道路距离

时间:2016-03-28 06:04:31

标签: android google-maps geolocation google-distancematrix-api

我正在开发一个Android应用程序,其中我每隔5分钟记录设备的点数。现在我想用这些点来计算道路覆盖的总距离。有没有办法做到这一点。在谷歌apis中,我看到有一个起点和终点使用它计算距离,但可能有多条路线相同。我需要找到这条特定路线的距离。我该怎么做?

由于

编辑:

谷歌距离矩阵api具有多个来源和多个目的地的选项。我不确定如果这有任何帮助:

origins — One or more locations to use as the starting point for calculating travel distance and time.
You can supply one or more locations separated by the pipe (|) character, in the form of an address or latitude/longitude coordinates. If you pass an address as a string, the service will geocode the string and convert it to a latitude/longitude coordinate to calculate distances. If you pass coordinates, ensure that no space exists between the latitude and longitude values.
origins=Bobcaygeon+ON|41.43206,-81.38992
Alternatively, you can supply an encoded set of coordinates using the Encoded Polyline Algorithm. This is particularly useful if you have a large number of origin points, because the URL is significantly shorter when using an encoded polyline. Encoded polylines must be prefixed with enc: and followed by a colon (:). For example: origins=enc:gfo}EtohhU:
destinations — One or more locations to use as the finishing point for calculating travel distance and time.
You can supply one or more locations separated by the pipe (|) character, in the form of an address or latitude/longitude coordinates. If you pass an address as a string, the service will geocode the string and convert it to a latitude/longitude coordinate to calculate distances. If you pass coordinates, ensure that no space exists between the latitude and longitude values.
destinations=Darling+Harbour+NSW+Australia|24+Sussex+Drive+Ottawa+ON|Capitola+CA
Alternatively, you can supply an encoded set of coordinates using the Encoded Polyline Algorithm. This is particularly useful if you have a large number of destination points, because the URL is significantly shorter when using an encoded polyline. Encoded polylines must be prefixed with enc: and followed by a colon (:). For example: destinations=enc:gfo}EtohhU:

1 个答案:

答案 0 :(得分:1)

我认为您可以使用Google Maps Direction API的航点来指示您想要计算的特定道路/点。

您可以以地址,纬度/经度坐标或地点ID的形式提供由竖线字符(|)分隔的一个或多个waypoints位置。

默认情况下,路线服务按给定顺序计算通过提供的路标的路线。或者,您可以传递optimize:true作为waypoints参数中的第一个参数,以允许Directions服务通过以更有效的顺序重新排列路标来优化提供的路线。

当Google Maps Directions API返回结果时,会将它们放在(JSON)路径数组中。 routes数组的每个元素都包含来自指定源和目标的单个结果。该路线可能包含一条或多条腿,具体取决于是否指定了任何航路点。

另一种方法是使用legs[]字段中的步骤[]。

路线字段中的每条路线都包含leg []。

legs[] - 包含一个数组,其中包含有关给定路线中两个位置之间路线的一部分的信息。对于指定的每个航路点或目的地,将有一条单独的航段。

每个腿部字段可能包含以下字段,如

  • distance表示此分段所涵盖的总距离,作为具有以下元素的字段
  • steps[]包含一系列步骤,表示有关旅程中每个单独步骤的信息

steps数组中的每个元素定义计算方向的单个步骤。步骤是方向路线的最原子单位,包含描述旅程中特定单一指令的单个步骤。例如。 “在W. 4th St.左转”该步骤不仅描述了该指令,还包含与该步骤如何与下一步骤相关的距离和持续时间信息。例如,表示为“合并到I-80 West”的步骤可以包含“37英里”和“40分钟”的持续时间,表示下一步是距离该步骤37英里/ 40分钟。

通过使用steps[],您可以获得两个航路点之间的特定距离。通过添加所有这些,您将获得总距离。