我正在为iPhone创建一个离线地图应用程序(使用MKMapKit
)。它将有一个国家列表。如果用户选择国家/地区,则将下载所有图块并将其存储在iPhone上。我将使用Open Street Map作为地图提供者。
(我已经读过批量下载是禁止的,但考虑到一个国家的瓷砖非常小(≈200MB)并且它们只会下载一次,至少我不要认为这是一个问题。)
我想我将使用模板网址@"http://c.tile.openstreetmap.org/{z}/{x}/{y}.png"
下载切片然后存储它们。我的问题是,我不知道如何确定哪些瓷砖属于哪个国家/地区,从而确定要下载哪些瓷砖。
我在另一个SO答案中找到this link,但这只允许你下载.pbf文件(我不知道它是什么)和每个大陆。
答案 0 :(得分:5)
首先:如果你真的想抓住所有的瓷砖(在所有缩放级别),你应该小心地再次阅读OSM Tile Usage Policy。如果您只想下载所有磁贴一次(对于您的开发环境),您可以使用existing downloaders来选择所需的国家/地区并下载它们。这将导致一个包含1000个小图像的目录,可能需要几天时间。
更好的方法是设置您自己的(基于桌面或服务器的)平铺渲染链,使您可以完全控制样式并且不会对社区资源造成压力。有关如何设置基于服务器的渲染堆栈的详细教程,请访问www.switch2osm.org。
答案 1 :(得分:1)
此 is 是个问题。仅下载200 MB的磁贴一次是有问题的,因为它不仅仅是流量,这些磁贴必须首先rendered。但是,如果我理解正确,您的应用程序每个用户将下载这200 MB。
相反,您应该考虑MaM已经建议的downloading raw data(PBF是)和render your own raster tiles,或者像其他热门应用一样创建矢量地图,例如{{ 3}}和OsmAnd。