检查一个点是否在路线中 - 谷歌地图

时间:2012-11-13 06:23:10

标签: google-maps google-maps-api-3

当用户请求路线时,我需要在Google地图中突出显示相关位置。 我找到了几个步骤来实现。但一度陷入困境。

让我们假设我们有大量积分(几千)的集合。我们需要找出它们中的哪一个位于(动态)路线中。

步骤1:首先根据路线过滤掉积分。这意味着,找到路线的max-lat,min-lat,max-lon,min-lon并将此滤波器应用于我们的组。这样我们就可以找到更少数量的合格候选人。

步骤2:我们仍然可以使用名为RouteBoxer的实用程序库过滤掉不必要的点。 (http://google-maps-utility-library-v3.googlecode.com/svn/tags/routeboxer/1.0/examples/routeboxer-v3.html)

步骤3:经过上述两步后,我们将点数从几千减少到几百。而这些点将围绕该路线,虽然不完全在它上面。这是我面临挑战的地方。如何检查这些点是否在那条路线上?我不认为让所有的点都成为一条路线并且检查距离是一个很好的解决方案(是的,它会起作用。但是..)因为路线可以是任何距离。有没有办法检查点和路线之间的最小距离?

2 个答案:

答案 0 :(得分:0)

RouteBoxer会给你一个多边形列表或LatLngBounds(如果给出多边形,你可以从中得到LatLngBounds)。您可以循环遍历每个点,并使用LatLngBounds类的contains方法检查该点是否位于任何边界上。

答案 1 :(得分:0)

是的,有dijkstra或kruskal算法。