我有一个在Google Map 上绘制的折线列表(来自Google Directions API) . 接下来,我希望我的标记在不使用Google Maps Roads API的情况下沿着这条线移动 .
要解决这个问题,这就是我目前正在做的事情:
-
从折线列表中,我选择路径A和B的两个 endpoints .
-
找出从A到B的方位 .
-
创建A和B之间相距1米的
LatLng
点列表 . -
迭代列表以检查最近的
LatLng
的GPS坐标 . -
将我的标记位置设置为最近的
LatLng
.
上面的工作在某些情况下,但主要是标记显示平行于折线而不是它 .
有没有其他方法可以让我的标记 snap to the polyline ?
1 回答
这是我自己实现的捕捉标记到折线(基于GPS位置):
首先,使用折线点创建一个距离较小的
LatLng
列表(我使用splitPathIntoPoints
函数中指定的一米距离):代码
splitPathIntoPoints
:代码
findDistance
:代码
findMidPoint
:一旦
mSplitPoints
填充了彼此相距1米的较小折线点,下面的函数将根据我当前的GPS位置找到折线上的折叠位置 . 请注意mMinorIndexTravelled
是我 class 中的私有字段,初始值设置为零 .