如何在iPhone上本地存储OpenStreetMap数据

6
我正在为大学的项目工作,其中有一部分让我很难处理。
简单来说,我想做以下五件事:
1.下载我所在城市的开放街道地图数据。 2.将这些数据存储在手机硬盘上。 3.在我的iOS应用程序中查看该数据以作为地图。 4.在地图上放置标记。 5.在这些路径之间沿路绘制路径。
我已经在处理这个项目的这部分已经好几个星期了,但是我仍然没有进展。我甚至连如何将地图存储到手机上都不知道,更别提查看地图数据了。我尝试使用"Route-Me"库,但无法使其正常工作(尽管它似乎是使用开放街道地图数据最好的库之一,因此我希望学会如何使用它)。我感到相当沮丧。
如果任何人已经完成我想要做的任务中的任何一项,请链接我到您所使用的教程/指南/视频。
我不是要求别人为我编写代码或完成工作,我想学习如何做到这点。但是,如果有人可以指引我学习的网站方向,我将非常感激。
欢迎提供任何建议或反馈。
2个回答

5
这是我解决问题的方法。
由于Tilemill不能直接读取.osm/.o5m/.pbf文件,因此我使用Osmosis将.osm文件转换为.shp文件。
然后在Tilemill中创建一个新项目,并将特定的.shp文件作为图层添加到新项目中。需要进行一些调整才能使地图看起来符合您的要求,但它与css非常相似,很容易上手。
一旦我将地图制作成想要的样子,我将其导出为.mbtiles文件。这需要很长时间,并且文件大小取决于瓦片的详细程度。我制作了一个包括7-14级缩放的爱尔兰地图,以及一个仅包括11-17级缩放的都柏林市地图。即使都柏林市地图的瓦片数量要少得多,它们的大小也都约为200MB。

我随后在网上找到了这个教程,它解释了如何将.mbtiles文件存储在您的应用程序中以及如何读取它:http://martinsikora.com/creating-mbtiles-db-for-ios-mapbox-from-hi-res-map-image

以下是我发现有用的其他链接:

http://www.kindle-maps.com/blog/using-tilemill-with-openstreetmap-data.html

http://mapbox.com/developers/mbtiles/

http://mapbox.com/mapbox-ios-sdk/api/

http://mapbox.com/developers/api/#static_api

http://support.mapbox.com/discussions

我希望这对某人有用


你采取了什么措施来减小.mbtiles文件的大小?我问这个问题是因为我的文件也太大了,无法在我的应用程序中导入。 - arniotaki
我减少了使用的图层数量。我将图像类型更改为png8(或较小的类型),并通过删除不需要的内容来自定义地图。但仍然大约有70-80 MB。 - Ian

4
我建议尝试MapBox iOS SDK。它实际上是从Route-Me库分叉出来的,可以让您完成列表中的所有操作。
一个关键点要记住的是,在下载OSM数据并将其本地存储在iOS设备上之间,您还需要进行另一步操作,那就是生成地图瓦片并将其存储在某种数据库中。 这里是一个使用MapBox SDK的示例iOS应用程序,具有在线和离线地图源,并且是一个很好的起点。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接