iOS是否有(离线)地理编码框架,库或数据库?一个从中获取数据的地方?
我需要能够将全球(或至少在美国)城市的街道地址划分为纬度和经度,用于日出和日落计算。
信息必须采用适用于iPhone OS的格式。 (数据库文件或用C / Objective-C编写)
答案 0 :(得分:29)
我建议:
[编辑] 例如,您可以从http://www.openstreetmap.org下载数据,只需单击导出选项卡,选择打开街道地图XML数据格式,然后导出数据:您将获得所选边界框的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数据/创建spaceite DB。它是免费/开源的,非常成熟: http://www.qgis.org/
这些是非常粗糙的线条。如果你对这种方法感兴趣,我可以进一步深入细节:我已经实现了这一点。我知道如何为iOS编译spatialite(这花了我一些时间......)以及如何导入OSM数据并为其创建空间索引。
答案 1 :(得分:0)
我认为现有的框架不存在。但是,你可能比联系这个骗子的作者更糟糕:Reverse Geocoding Without Web Access
答案 2 :(得分:0)
我不知道如何做你想做的事情,但这里有一些框架:
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/
在搜索答案时我发现有些人声称这是资源密集型的,我认为他们可能是对的:)所以请考虑在创建应用程序时;)
答案 3 :(得分:0)
这个答案可能会有所帮助: How to convert an address to a latitude/longitude?
你可能需要做一些额外的工作。
答案 4 :(得分:0)
世界上每个地方(或美国)的所有地址......这需要大量空间,超过普通iOS设备可以处理的空间。所以,绝对不是离线版本。
但是,您可以简单地使用Open Street Maps来帮助您获取某些数据,将其存储在某种缓存中(例如,只存储5英里半径范围内的所有内容),并在离开该区域时刷新此缓存。
答案 5 :(得分:0)
如果开发人员正在搜索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
希望这有帮助