【发布时间】:2011-05-21 09:33:51
【问题描述】:
是否有适用于 iOS 的(离线)地理编码框架、库或数据库?从哪里获取数据?
我需要能够将全球(或至少在美国)城市中的街道地址地理编码为纬度和经度,以便计算日出和日落。
信息必须采用适用于 iPhone 操作系统的格式。 (数据库文件或用 C/Objective-C 编写)
【问题讨论】:
是否有适用于 iOS 的(离线)地理编码框架、库或数据库?从哪里获取数据?
我需要能够将全球(或至少在美国)城市中的街道地址地理编码为纬度和经度,以便计算日出和日落。
信息必须采用适用于 iPhone 操作系统的格式。 (数据库文件或用 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 测试版,因为那是最支持 .osm 文件的版本。
另一个很好的资源是 QGis,用于可视化 OSM 数据/创建空间数据库。它是免费/开源的并且非常成熟: http://www.qgis.org/
这些是非常粗略的线条。如果您对这种方法感兴趣,我可以提供更深入的细节:我已经实现了这一点。我知道如何为 iOS 编译 spatialite(这花了我一些时间......)以及如何导入 OSM 数据并为其创建空间索引。
【讨论】:
我不确定如何做你想做的事情,但这里有一些框架:
http://code.google.com/apis/maps/documentation/geocoding/(在线) http://www.gisgraphy.com/(我认为是离线)
此链接也可能对您有所帮助:
How to convert an address to a latitude/longitude?
希望这有帮助:)
编辑:
这也可能对您有所帮助:) http://www.geonames.org/export/
在寻找答案时,我发现有些人声称这是资源密集型的,我认为他们可能是对的 :) 所以在创建应用程序时考虑一下;)
【讨论】:
我认为没有可用的现有框架。但是,您可以比联系这个骗子的作者做得更糟:Reverse Geocoding Without Web Access
【讨论】:
这个答案可能会有所帮助: How to convert an address to a latitude/longitude?
你可能需要做一些额外的工作。
【讨论】:
世界上每个地方(或美国)的所有地址...这占用了大量空间,超出了普通 iOS 设备的处理能力。所以,绝对不是离线版本。
但是,您可以简单地使用 Open Street Maps,它可以帮助您获取一些数据,将其存储在某种缓存中(例如,仅存储 5 英里半径内的所有内容)并在您离开该区域时刷新此缓存。
【讨论】:
如果开发人员正在搜索 OpenStreetMaps 路径的教程,我强烈推荐这个教程:
http://shikii.net/blog/offline-maps-in-ios-using-openstreetmap-and-route-me/
这是一个简单的教程,可帮助您开始使用使用 Route-me github 存储库的 Open Street Maps。这是github上的示例应用程序:
https://github.com/Label305/iOS-OfflineMaps-Example
希望对你有帮助
【讨论】: