2017-09-10 16 views
3

MapKitでタイルをキャッシュする方法を見つけましたが、領域内のすべてのタイルを最上位タイルから最下位タイルにロードするソリューションは見つかりませんでした。mapView内の領域のすべてのタイルをロード

矩形領域のすべてのタイルをマップビューにキャッシュします。 Mapkitでこれを行う方法はありますか?あなたはMKTileOverlayとオーバーライドメソッド url(forTilePath path: MKTileOverlayPath) -> URL

MKTitleOverlayをサブクラス化する必要がMKMapViewでカスタムタイルをロードするために

+0

お試しいただいたコードをお寄せください –

答えて

1

は、タイルのためのx、y、zのプロパティが含まれています。 ので、実装は次のようになります。あなたのmapView設定機能で

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 
} 

は、次の行を追加します。

let overlay = CustomTileOverlay() 
overlay.canReplaceMapContent = true 
mapView.add(overlay, level: .aboveLabels) 

はまた

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

P.S.でレンダラを返すことを忘れないでくださいその件名のraywenderlich.comに関する素晴らしいチュートリアルがあります:

+0

あなたの回答は私の質問に直接は反応しませんでしたが、記事をリンクすると、私の挑戦;)ありがとう! –

関連する問題