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

问题描述 投票:0回答:1

我希望制作一个利用OSM服务并运行我选择的算法来查找路线的Android应用,例如A *Dijkstra的启发式搜索

OSM的Routing Wiki页面有一些不错的指针,但是它没有提供有关如何在应用程序中实现自己的算法的任何见解。

android navigation openstreetmap osmdroid
1个回答
0
投票

此答复是概述,它可以帮助您更好地定位环境并找到解决问题的方法。您的问题过于笼统,无法给出确切的简单答案,但我确实理解您为什么要提出这样的问题。

您可以使用Osmdroid库显示您在Android上拥有的路线。

请记住,Osmdroid的核心功能是显示地图图块。地图图块只是位图,因此您需要在线图块源或离线图块源。如何做到这一点在文档中以及部分关于SO的其他问题中都有介绍。这是一个太大的话题,无法在此处详细说明。为了清楚起见:Osmdroid无法直接呈现带有原始OpenstreetMap数据的.osm文件。地图图块通常以非常复杂的方式从该数据中渲染,而不是即时生成的。

Osmdroid库中另一个非常重要的功能是显示所谓的叠加层的功能。例如。标记,多边形等。您可以使用这些标记在地图和其他希望显示的要素上绘制路线。文档中再次对此进行了介绍,太大了,无法在此处进行详细说明。

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

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

如果您需要覆盖的区域足够小,则可以从在项目中包含.osm文件开始,然后以与现在相同的方式运行算法。也许这足以满足您的情况。

[寻找灵感的一个有趣的项目是Graphopper-他们完全构建了我上面所说的内容,并使用它为Android / iO和Web API提供了一个库。但是核心是相同的-将OSM数据预处理为图形数据并在其上运行算法。由于您希望自己实现算法,因此该库将无济于事(除非您分叉项目并对其进行修改),但它可能是宝贵的学习资源。

© www.soinside.com 2019 - 2024. All rights reserved.