Ios 在mapView中加载区域的所有平铺

Ios 在mapView中加载区域的所有平铺,ios,swift,caching,mapkit,offline,Ios,Swift,Caching,Mapkit,Offline,我已经找到了一种使用MapKit缓存磁贴的方法,但是我还没有找到任何解决方案来将一个区域内的所有磁贴从顶层磁贴加载到底层磁贴 我想在mapview中缓存矩形区域的所有平铺。在Mapkit中有什么方法可以做到这一点吗 要在MKMapView中加载自定义磁贴,您需要对MKTileOverlay进行子类化并重写方法 url(forTilePath路径:MKTileOverlayPath)->url MKTitleOverlay包含磁贴的x、y和z属性。 因此,实现可能如下所示: override fu

我已经找到了一种使用MapKit缓存磁贴的方法,但是我还没有找到任何解决方案来将一个区域内的所有磁贴从顶层磁贴加载到底层磁贴


我想在mapview中缓存矩形区域的所有平铺。在Mapkit中有什么方法可以做到这一点吗

要在
MKMapView
中加载自定义磁贴,您需要对
MKTileOverlay
进行子类化并重写方法
url(forTilePath路径:MKTileOverlayPath)->url

MKTitleOverlay
包含磁贴的x、y和z属性。 因此,实现可能如下所示:

override func url(forTilePath path: MKTileOverlayPath) -> URL {
  let tilePath = Bundle.main.url(
  forResource: "\(path.y)",
  withExtension: "png",
  subdirectory: "tiles/\(path.z)/\(path.x)",
  localization: nil)!
  return tile
}
mapView
设置功能中添加以下内容:

let overlay = CustomTileOverlay()
overlay.canReplaceMapContent = true
mapView.add(overlay, level: .aboveLabels)
也不要忘记返回渲染器

func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
  return MKTileOverlayRenderer(tileOverlay: overlay)
}

另外,关于这个问题有一个很好的教程:

请分享你尝试的代码。你的答案没有直接回答我的问题,但你链接了一篇文章,给了我一些提示,告诉我如何至少进一步应对我的挑战;)非常感谢。