2012-02-14 91 views
2

我想要显示路线上的自定义路线以及当前进度。我覆盖了一条Polyline以显示路线,并且我能够找到当前位置的LatLng并放置一个标记。我现在想要做的是使用不同的颜色突出显示Polyline的旅行部分。我非常确定,一个Polyline不可能有多种颜色,所以我打算在第一个Polyline上覆盖第二个Polyline以产生这种效果。这里是我的问题:Google Maps API V3 - 显示沿路线的进度

了解当前位置的LatLng并使用LatLng点阵列来创建原始Polyline如何创建第二个“Progess”路线?

提前感谢。

回答

0

除非您已经确定车辆已经通过了某些点,否则这将会非常困难。如果您意识到已经通过了某些点,则只需创建第二条折线,并将传递的点和当前标记作为折线的末端。您可能需要更改折线的宽度,以便在覆盖初始路线时使其可见。

如果你不知道这些点是否已经通过,我就不知道你能做什么,除了写一些代码来确定你的当前位置是否超过了一定的点数,但我不知道你是如何做到这一点的,如果一条路线可能遍布整个地方......现在,如果你的观点从直西向直东等,比编码东西容易,但我怀疑这是案件。

希望这有助于有点....

1

随着一些假设:

  • 你的路径是相当密集(如果没有,你可以插中间点)
  • 您的路线不与自身重叠(不具有重复圆形路径工作,比方说)

..one粗方式将是如下:

使用Python'y伪代码,说你有一个这样的路线:

points = [LatLng(1, 1), LatLng(2, 2), LatLng(3, 3), LatLng(4, 4)] 

你画这是一个折线像往常一样。

然后,鉴于你目前的位置,你会发现在路线上的最近点:

cur_pos = LatLng(3.1, 3.0123) 

nearest_latlng = closest_point(points, to = cur_pos) 

然后nearest_latlng将包含LatLng(3, 3)

在列表中找到nearest_latlng,然后简单地画一个第二折线向上到这一点。换句话说,您截断在当前经纬度的points列表:

progress_points = [LatLng(1, 1), LatLng(2, 2), LatLng(3, 3)] 

..然后绘制该地图

如前所述上,这将打破,如果路径循环回本身(closest_point永远只能找到第一个或最后一个点)

如果你知道如何迄今已走过,有一个epoly扩展其给出了可用于一些方法,主要是:

.GetIndexAtDistance(metres) 
Returns the vertex number at or after the specified distance along the path. 

该索引可以用来代替计算一个closest_point上述