隨着一些假設:
- 你的路徑是相當密集(如果沒有,你可以插中間點)
- 您的路線不與自身重疊(不具有重複圓形路徑工作,比方說)
..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
上述
來源
2012-05-01 09:52:43
dbr