我正在寻找一种“简单”的方法来在Android应用程序中实现离线地理编码。任何建议如何做到这一点?
作为学术项目的一部分,我需要能够使用离线反向地理编码从坐标中获取地址。必须离线完成此操作(与Nominatim相比)。此外,我将仅使用子区域(法国,英国等)。我仅出于测试目的和PoC(概念验证)需要它,因此我正在寻找易于实现的东西。目前,我正在使用osmbonuspack(在线服务)中的“ GeocoderNominatim”,因此最好将其扩展为脱机使用。
我熟悉OsmAnd(开放源代码)之类的应用程序,但可以将其构造为库。与我要进行的测试相比,在其设计之后实现上述功能将是巨大的开销。但是,如果没有其他方法,它仍然是一个选项。
PS:在先前的“问题”中,我无法找到针对我的特殊情况的正确答案
AFAIK没有“简单”的方式(这里是带有现成数据包的现成库)在Android上执行该操作。
正如您说的那样,没有Nominatim,但是该服务的设计并非考虑到移动设备/离线功能,并且需要大量资源,因此不能作为android软件包使用。只有very few libs具有离线功能,而在Android上则更少。
如果这只是一个原型,我强烈建议使用外部解决方案作为OsmAnd或Navit并在外部调用它们。否则,您可以花费超过2周的时间来创建自己的解决方案,该解决方案可以查找街道名称并在移动设备上工作,但是我想这并不是您研究的主要目标;)
我创建了一个开源库来执行此操作
我基于SQLite为Android离线地理编码创建了一个开源库,并使用OpenStreetMap数据:sun-jiao/Osmunda
您可以从数据源网站下载osm数据,然后使用此库将其导入数据库,然后可以查询地址。
有关文档和示例代码,请参阅readme.md。
注意:该项目仍在进行中。数据导入操作需要很长时间,而查询操作最多可能需要5分钟。