我想在某些已经存在的地图API路线上计算最短路径,然后绘制它们。
话虽这么说,我需要能够提取/获取尽可能多的数据(即路线的坐标),以便能够使用它进行操作。
我的第一个想法是使用谷歌地图,但据我所知,谷歌地图API为我的问题提供了非常少的必要数据,因此我将无法进行任何类型的准确计算。此外,现有的Google Maps API算法并不关心我,因为我想实现自己的算法并对其进行测试。
然后我查看了Openstreetmaps,但它的文档也很少谈论这个主题,我仍然不知道是否可以进行这样的计算。
所以,仍然没有排除谷歌地图和Openstreet地图,我的问题是 - 现有的地图API对我来说最适合我,不仅要计算最短路径,还要在其上代表它们?
答案 0 :(得分:2)
是的,你可以用OpenStreetMap做这些事情。
OpenStreetMap提供各种数据downloads,范围从整个Planet到Country and area extracts甚至是小城市或self-chosen areas。
如果您想从OSM数据计算路线,您必须了解elements,tags,OSM XML format以及OSM维基中描述的更多内容。在那里,您还可以找到关于列出几个现有路由库以及routing和online routers的offline routers页面。其中许多是开源的,如果你在某个时候陷入困境,它们可能会有所帮助。
答案 1 :(得分:0)
如果您想对地图中的信息有很大的自由,那么您可以使用OpenStreetMap。您可以通过自己解析并将其保存为您需要的数据格式,从原始数据格式获取所有街道和POI的源地图信息。使用该数据,您可以进行计算并可视化结果。
我就是这样做的,而且效果非常好。有一些OSM解析器可以让你开始使用你想要的语言(我使用this java code)。对于可视化,您还可以使用OSM(我使用JXMapviewer),但您也可以使用google API通过指定中间点的坐标来绘制路线。
答案 2 :(得分:0)
如果你想在c ++中添加自己的路由算法,pgrouting可能是一个很好的起点。要添加自己的算法,只需在src目录中创建自己的算法并将其添加到cmake。
按照http://workshop.pgrouting.org/index.html开始,它还会显示如何使用openlayers创建表示。