在一些假设的基础上:
- 您的路径相当密集(如果不是,您可以插值中间点)
- 您的路线不会重叠(例如,不适用于重复的圆形路径)
..一个粗略的方法如下:
使用Python伪代码,假设您有这样的路线:
points = [LatLng(1, 1), LatLng(2, 2), LatLng(3, 3), LatLng(4, 4)]
像往常一样,您可以将其绘制为PolyLine。
然后,根据您当前的位置,您可以找到路线上最近的点:
cur_pos = LatLng(3.1, 3.0123)
nearest_latlng = closest_point(points, to = cur_pos)
那么nearest_latlng
将包含LatLng(3, 3)
在列表中找到nearest_latlng
,然后简单地绘制第二条折线到该点。换句话说,您要在当前的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