在iOS上进行离线反向地理编码

现在有很多关于这个问题的问题,但是我已经看过尽可能多的问题,没有得到答案。

我正在尝试在iOS上执行基于经度和纬度的离线反向地理编码查找。 我希望能够提供一个经纬度,并提供这个点所在的国家。 我可以使用Geonames(例如: http ://api.geonames.org/countryCode?lat=45.03&lng=8.2&username=demo)执行此操作,但是我需要离线执行类似的function,而不需要设备上的Internetfunction。

CLLocation不提供可以为我所做的工作足够可靠的离线服务,它依赖于您以前在线时所做的caching等。凌乱。

我试过这个: https : //github.com/drodriguez/reversegeocoding,但没有任何运气,它需要一些稍微复杂/令人困惑的terminal安装使用我从来没有听说过的Thor的东西,并呕吐各种各样的错误,所以我保释。

我发现了一些可下载的地图,但是这似乎更加复杂,令人担忧的是,数百兆甚至千兆字节的大小 – 远远超出了iOS应用程序的范围。 我只需要国家,没有比这个更小的(城市,街道,地点等),所以我想我应该能够得到一个更小的文件。

所以我的关键问题是:是否有一些预先存在的数据库或工具,最好有iOS支持,我可以提供一个纬度/经度,并获得一个国家? 而且,如果不是,我应该采取什么措施来获得这样的function?

提前致谢。

ReverseGeocodeCountry是iOS的一个简单的轻量级离线国家反向地理编码器,它具有一个静态JSON文件和国家多边形数据,用于反转地理编码任何纬度/经度:

https://github.com/krisrak/ios-offline-reverse-geocode-country

“ 世界各国 ”是一个.csv文本文件,其中包含国家,坐标,本地化国家名称,首都和其他信息。 这似乎是免费使用。 你只需要将其导入到SQLite数据库。

编辑只是注意到你想要反向地理编码。 该数据库只适用于前向地理编码。

您可以在http://www.gadm.org/download下载所有国家的shapefile文件。 如果你下载一个.kmz ,你可以将其解压到一个边界坐标列表。 你可能需要每五或十个坐标来获得较小的尺寸(精度较低)。

以防万一我可以build议另一个很好的书面离线地理编码库。 https://github.com/Alterplay/APOfflineReverseGeocoding