iOS是否有离线地理编码框架,库或数据库?

时间:2010-12-07 05:39:33

标签: iphone location geocoding

iOS是否有(离线)地理编码框架,库或数据库?一个从中获取数据的地方?

我需要能够将全球(或至少在美国)城市的街道地址划分为纬度和经度,用于日出和日落计算。

信息必须采用适用于iPhone OS的格式。 (数据库文件或用C / Objective-C编写)

6 个答案:

答案 0 :(得分:29)

我建议:

  • 从Open Street Maps获取数据,许可证只是暗示您提及来源。某些国家/地区有一些OSM摘录,我不知道是否已经为某些城市制作了一些,但我认为这可以在您身边实现。

[编辑] 例如,您可以从http://www.openstreetmap.org下载数据,只需单击导出选项卡,选择打开街道地图XML数据格式,然后导出数据:您将获得所选边界框的OSM数据。 可以从cloudmade下载更多数据:http://downloads.cloudmade.com/

  • 然后将此数据导入sqlite DB。然后从这个带有地理信息的sqlite DB创建一个空间索引:这样的事情可以使用spatialite来实现(spatialite是一个非常好的GIS扩展到Sqlite)

[编辑] 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/

  • 一旦你完成了这个,你将能够实现一个基本的地理编码器,因为spatialite实现了诸如“给我最近的GPS坐标线”这样的功能(基本的GIS功能)。

这些是非常粗糙的线条。如果你对这种方法感兴趣,我可以进一步深入细节:我已经实现了这一点。我知道如何为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

希望这有帮助