Android 具有不同路由查找算法的导航应用程序

Android 具有不同路由查找算法的导航应用程序,android,navigation,openstreetmap,osmdroid,Android,Navigation,Openstreetmap,Osmdroid,我希望制作一个android应用程序,利用服务并运行我选择的算法来找到路线,比如A*或Dijkstra上的一些启发式算法 OSM的wiki页面有一些很好的提示,但它没有提供任何关于如何在应用程序中实现自己的算法的见解。此响应是一个概述,它可能会帮助您更好地定位环境并找到解决问题的方法。你的问题太宽泛了,无法给出一个准确简单的答案,但我确实理解你为什么要问这样的问题 您可以使用库来显示Android上的路线 请记住,Osmdroid的核心功能是显示地图分幅。地图分幅只是位图,因此您需要分幅的在线来

我希望制作一个android应用程序,利用服务并运行我选择的算法来找到路线,比如A*或Dijkstra上的一些启发式算法


OSM的wiki页面有一些很好的提示,但它没有提供任何关于如何在应用程序中实现自己的算法的见解。

此响应是一个概述,它可能会帮助您更好地定位环境并找到解决问题的方法。你的问题太宽泛了,无法给出一个准确简单的答案,但我确实理解你为什么要问这样的问题

您可以使用库来显示Android上的路线

请记住,Osmdroid的核心功能是显示地图分幅。地图分幅只是位图,因此您需要分幅的在线来源或离线来源。如何做到这一点包含在文档中,部分内容包含在其他问题中。这是一个太大的话题,无法在这里详细解释。只想说明一点:
.osm
包含原始OpenstreetMap数据的文件不能由Osmdroid直接渲染。地图分幅通常以非常复杂的方式从该数据渲染,而不是动态渲染

Osmdroid库中另一个非常重要的功能是能够显示所谓的覆盖。例如,标记、多边形等。您可以使用这些标记在地图上绘制路线以及您希望显示的其他要素。文档中再次介绍了这一点,这里的详细信息太多了

Osmdroid(Osmbonuspack中的AFAIK)支持路由,但这是关于使用一些第三方服务来获取路由数据并显示这些数据。根据您的评论,您希望实现自己的算法,因此这对您没有用

最后一部分是如何将算法集成到其中。这不是一个答案简单的问题。您需要自己完成几乎所有的工作,首先从OpenstreetMap数据库(
.osm
文件)获取运行算法所需的数据。我认为没有API可以为您提供合理的方式,以适合路由计算的形式访问数据。我会选择的方法是开发某种预处理,它要么使用
.osm
文件,要么使用包含数据的数据库,生成我自己的表示导航图形的结构。我希望在我的应用程序中包含这个图,并在该数据上运行我的算法。我的算法的输出将是路线:一个坐标列表,我将使用它来绘制多段线

如果需要覆盖的区域足够小,可以从在项目中包含
.osm
文件开始,并以与现在相同的方式运行算法。也许这对你的处境来说已经足够好了


寻找灵感的一个有趣的项目是——他们完全按照我上面所说的构建了一个Android/iOs库和一个web API。但核心是相同的——将OSM数据预处理为图形数据并在此基础上运行算法。由于您希望自己实现该算法,此库将不会对您有所帮助(除非您提出项目并对其进行修改),但它可能是一个有价值的学习资源。

您的动机和范围是什么?您想尝试/学习不同的路由算法吗?或者你不想主要学习如何构建android应用程序?或者您想为某个问题构建一个生产就绪的解决方案?根据你的问题,你可能不知道你选择的主题的大小和复杂性。你真正的问题是什么?如何编写路由算法?如何读取原始OSM数据?@JosefAdamcik@scai我有一个算法,它根据一些约束条件输出从源到目标的
路由。在处理.osm文件后,我已经对实际地图数据计算了这条
路线
。现在,我希望构建一个生产就绪/可用的应用程序,它利用实时OSM功能/数据(我不知道如何使用),并在应用程序中显示
路线
,这是我算法的输出(而不是使用Dijkstra)。我的目标是在后端的导航应用程序上演示我的算法的工作。在本例中,请查看OSM wiki中的页面。