是否存在适用于iOS的(离线)地理编码框架、库或数据库?有没有获取数据的地方?
我需要将全球(或至少是美国)城市的街道地址转换为经纬度,以进行日出和日落计算。
必须使用可在iPhone OS上运行的格式(可以是数据库文件或使用C/Objective-C编写)提供信息。
我的建议:
[编辑] 例如,您可以从http://www.openstreetmap.org下载数据,只需单击导出选项卡,选择Open Street Map XML Data格式,然后导出数据:您将获得所选范围的OSM数据。 还可以从cloudmade下载更多数据:http://downloads.cloudmade.com/
[编辑] Spatialite提供了一个GUI工具,可以从各种数据源格式创建空间数据库。可以从这里下载该工具的二进制文件:http://www.gaia-gis.it/spatialite-2.4.0-4/binaries.html(spatialite_gui)。我链接到2.4.0 beta,因为它最能支持.osm文件。
另一个很好的资源是QGis,可以可视化OSM数据/创建spatialite DB。它是免费/开源的,并且非常成熟:http://www.qgis.org/
以下是大致的内容。如果您对这种方法感兴趣,我可以提供更深入的细节:我在自己的侧面实现了这一点。我知道如何为iOS编译spatialite(这花费了我一些时间...),还知道如何导入OSM数据并为其创建空间索引。
我不确定如何做你想做的事情,但是这里有一些框架:
http://code.google.com/apis/maps/documentation/geocoding/(在线) http://www.gisgraphy.com/(我认为它是离线的)
这个链接也可能对你有帮助:
希望这能帮到你 :)
编辑:
这也可能会对你有所帮助 :) http://www.geonames.org/export/
在寻找答案时,我发现有些人声称这是资源密集型的,我认为他们可能是正确的 :) 所以在创建应用程序时请考虑这一点;)
我认为目前没有现成的框架可用。不过你可以联系这个重复内容的作者:无需网络访问的逆地理编码
全球(或美国)每个地方的所有地址... 这需要大量的空间,超过了平均 iOS 设备的处理能力。因此,绝对不是离线版本。
然而,您可以简单地使用 Open Street Maps 来获取一些数据,将其存储在某种缓存中(例如仅存储 5 英里半径内的所有内容),并在离开该区域时刷新此缓存。
如果开发者正在寻找有关OpenStreetMaps路径的教程,我强烈推荐这个教程:
http://shikii.net/blog/offline-maps-in-ios-using-openstreetmap-and-route-me/
这是一个简单的教程,帮助你开始使用Open Street Maps,它使用了Route-me的github存储库。这里有一个在github上的示例应用程序:https://github.com/Label305/iOS-OfflineMaps-Example
希望这能有所帮助