2012-02-14 87 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上述