2011-11-26 54 views
3

我有一个Google地图区域,其路由未定义。这是我大学的校园。由于道路没有显示在地图上,因此我想再建两幢建筑物和一些多段线来定义道路。然后,我将应用A *算法来查找一条折线与另一条折线之间的最短路线。该地图将可用于Android移动应用程序。在基本状态下,应用程序更新用户的位置。例如,用户可以请求去工程学院。现在我怎么知道他在哪里,我的意思是路线的来源是什么,最接近的折线?这是事情的方式吗?谢谢。谷歌地图上的自定义路由

回答

1
  1. 使用OpenStreetMap数据;您可以加入OSM作为贡献者,并将建筑物,道路和其他东西添加到地图中。 OpenStreetMap是一种维基百科,但带有地图,而不是百科全书文章。

  2. 下载并处理校园的OpenStreetMap数据:获取所有可用作路由的多段线;整理他们的观点;识别多个多段线共有的点 - 它们是节点;创建连接这些节点的弧的有向图。

  3. 使用有向图实现A *算法。 A *绝对是使用最好的算法;快速,正确和有据可查。

  4. 使用GPS设备(您的代码正在运行)找出您的用户在哪里。 GPS以纬度/经度给出位置; OpenStreetMap数据也在lat/long;所以应该工作正常。

这自然会涉及一些研究和努力工作。我保证它会做你想做的事情,因为我自己做过这些事情(商业上 - 我不会链接到我的产品,因为我已经被指责了;但是我自然声称做某件事在商业上有一定的规定) 。有很多开源软件可以帮助解决这些问题。特别是,A *算法在维基百科上解释得非常好。

0

我不认为A *算法是正确的算法。对于最短路径dijkestra算法更好。根据维基百科,A *只会更快,但结果相同。否则似乎很合理。

+0

我很欣赏你的答案,但是你知道什么算法是用来得到最接近的折线吗?这将是我的Dijkistra算法的来源 – user1066429

+0

您最接近的折线是什么意思? – Bytemain

0

如果你的问题是要找到用户的位置,那么你可以使用GPS。 关于获得的最短路线:A *是不是dijkestra快,所以它是一个不错的选择,但可能获得的结果必须是从多晶线的节点,而不是从一个聚一行到其他