适用于Android的OpenStreetMap离线地理编码

问题描述 投票:3回答:3

我正在寻找一种“简单”的方法来在Android应用程序中实现离线地理编码。任何建议如何做到这一点?

作为学术项目的一部分,我需要能够使用离线反向地理编码从坐标中获取地址。必须离线完成此操作(与Nominatim相比)。此外,我将仅使用子区域(法国,英国等)。我仅出于测试目的和PoC(概念验证)需要它,因此我正在寻找易于实现的东西。目前,我正在使用osmbonuspack(在线服务)中的“ GeocoderNominatim”,因此最好将其扩展为脱机使用。

我熟悉OsmAnd(开放源代码)之类的应用程序,但可以将其构造为库。与我要进行的测试相比,在其设计之后实现上述功能将是巨大的开销。但是,如果没有其他方法,它仍然是一个选项。

PS:在先前的“问题”中,我无法找到针对我的特殊情况的正确答案

android geolocation openstreetmap offline
3个回答
2
投票

AFAIK没有“简单”的方式(这里是带有现成数据包的现成库)在Android上执行该操作。

正如您说的那样,没有Nominatim,但是该服务的设计并非考虑到移动设备/离线功能,并且需要大量资源,因此不能作为android软件包使用。只有very few libs具有离线功能,而在Android上则更少。

如果这只是一个原型,我强烈建议使用外部解决方案作为OsmAnd或Navit并在外部调用它们。否则,您可以花费超过2周的时间来创建自己的解决方案,该解决方案可以查找街道名称并在移动设备上工作,但是我想这并不是您研究的主要目标;)


1
投票

我创建了一个开源库来执行此操作

https://github.com/AReallyGoodName/OfflineReverseGeocode


0
投票

我基于SQLite为Android离线地理编码创建了一个开源库,并使用OpenStreetMap数据:sun-jiao/Osmunda

您可以从数据源网站下载osm数据,然后使用此库将其导入数据库,然后可以查询地址。

有关文档和示例代码,请参阅readme.md。

注意:该项目仍在进行中。数据导入操作需要很长时间,而查询操作最多可能需要5分钟。

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