Я разработал приложение, которое использует пользовательскую карту, составленную из объектов MKTileOverlay, которые имеют размер карты 256x256. Все работало нормально, пока я не обновил свою цель iPhone до iOS 13. После этого, когда я запускаю майское приложение, карта корректно отображается на экране. Но когда я немного перемещаюсь, чтобы показать другие части карты, некоторые плитки начинают отображаться, как на картинке ниже. Я уверен, что изображение для не показанной плитки находится в пакете ресурсов, а ее правильный URL-адрес возвращается в приведенном ниже коде.
Кто-нибудь еще сталкивался с этой проблемой?

А вот код, связанный с плитками карты (забавно c setupTileRenderer () вызывается в viewDidLoad ()):
func setupTileRenderer() {
let overlay = MapTilesOverlay()
tileRenderer = MKTileOverlayRenderer(tileOverlay: overlay)
overlay.minimumZ = 8
overlay.maximumZ = 11
mapView.add(overlay, level: .aboveLabels)
}
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
if overlay is MapTilesOverlay {
// Overlay is a map tile
return tileRenderer
}
}
class MapTilesOverlay: MKTileOverlay {
override func url(forTilePath path: MKTileOverlayPath) -> URL {
// Locate a matching tile in the resource bundle
let tilePath = Bundle.main.url(
forResource: "\(path.y)",
withExtension: "png",
subdirectory: "MapTiles/\(path.z)/\(path.x)",
localization: nil)
guard let tile = tilePath else {
// If a tile is not provided, it’s replaced by a transparent tile.
return Bundle.main.url(
forResource: "TransparentTile",
withExtension: "png",
subdirectory: "MapTiles",
localization: nil)!
}
return tile
}
}