2012-11-13 46 views
3

当用户请求路线时,我需要在谷歌地图中突出显示相关位置。 我找到了几个步骤来实现。但有一点卡住了。检查一个点是否位于路线中 - Google地图

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

第一步:先根据路线滤出点。这意味着,找到路线的最大经度,最小纬度,最大纬度,最小纬度,并将此滤波器应用于我们的组。这样我们可以找出更少的合格候选人。

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

第3步:经过上述2个步骤后,我们减少了从几千点到几百点。而这些点将会在那条路线的某个地方,尽管不完全在它上面。这是我面对挑战的地方。如何检查这些点是否在该路线中?我不认为让所有的点成为一条路线,并检查距离是一个好的解决方案(是的,它会工作,但..),因为路线可以是任何距离。有什么方法可以检查点和路线之间的最小距离吗?

+0

你有没有想出一个解决方案?请发表您的解决方案(如果可能的话),因为我也在做类似的事情。 –

+0

只是留下我的评论,以保持更新。我正在寻找非常相似的东西。 – Ben

回答

0

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

+0

你可以显示一些代码来确定使用RouterBox重叠段吗? – Wikki

+0

你可以详细说明“重叠片段”吗? – Salman

+0

看到我的网站。 (http://www.kbook.com.au/tb/) 它可让您存储多个路线,然后您可以从右侧的列表中浏览它们。浏览已存储的路线以查看重叠路线。 我需要确定如何找出重叠路线或部分路线重叠到另一条路线。 – Wikki

0

是的,有dijkstra或kruskal算法。

相关问题