我有一个Google地图区域,其中的路线未定义。它是我大学校园的地图。我想要添加两座建筑和一些折线来定义道路,因为道路在地图上没有显示。然后我将应用A*算法在两个折线之间找到最短路径。该地图将可供移动端的Android应用使用。在其基本状态下,该应用会更新用户位置。用户可以请求前往工程系。现在问题是,我将如何知道他在哪里,我的意思是路径的源头是什么,最近的折线?这是否是处理这些事情的方法?谢谢。
使用OpenStreetMap数据;您可以加入OSM作为贡献者,并向地图中添加建筑物、道路和其他内容。OpenStreetMap类似于维基百科,但它是关于地图的,而不是百科全书文章。
下载并处理您校园的OpenStreetMap数据:获取所有可用作路线的折线;对它们的点进行排序;确定多个折线共有的点-它们是节点;创建连接这些节点的弧的有向图。
使用有向图实现A*算法。A*算法绝对是最好的算法;快速、正确且文档完善。
使用GPS设备(在其上运行您的代码)查找用户所在位置。GPS以纬度/经度给出位置;OpenStreetMap数据也是以纬度/经度给出的,因此应该能正常工作。
这自然会涉及一些研究和辛勤工作。我保证它会做到您想要的,因为我自己也做过(商业性质的-我不会链接到我的产品,因为我曾因此受到警告;但我自然声称商业化做某件事情会有一定的纪律性)。有许多开源软件可以帮助处理这些事情。特别是,A*算法在维基百科上解释得非常好。
我认为A*算法不是正确的算法。对于最短路径问题,Dijkstra算法更好。根据维基百科,A*算法只是更快,但结果相同。除此之外,其他方面都非常合理。