Я использую MapBox для загрузки офлайн-карты. Чтобы у моего пользователя был доступ к определенной области, когда он отправляется в путешествие. Использование документации MapBox Offline показывает, что MapBox Map всегда пытается загрузить (повторно загрузить) всякий раз, когда есть соединение.
Как настроить MapBox так, чтобы он проверял хранилище, чтобы узнать, загружена ли карта?
func startOfflinePackDownload() {
let region = MGLTilePyramidOfflineRegion(styleURL: mapView.styleURL, bounds: mapView.visibleCoordinateBounds, fromZoomLevel: mapView.zoomLevel, toZoomLevel: 13)
let userInfo = ["name": "My Offline Pack"]
let context = NSKeyedArchiver.archivedData(withRootObject: userInfo)
MGLOfflineStorage.shared().addPack(for: region, withContext: context) { (pack, error) in
guard error == nil else {
// The pack couldn’t be created for some reason.
print("Error: \(error?.localizedDescription ?? "unknown error")")
return
}
// Start downloading.
pack!.resume()
}
}
Я нашел приведенный ниже код, чтобы проверить, существует ли уже загрузка ... Итак, это будет в начале моей функции startOfflinePackDownload () выше. Однако более новая версия MapBox не распознает код. Может ли кто-нибудь помочь мне в этом, пожалуйста?
MGLOfflineStorage.sharedOfflineStorage().getPacksWithCompletionHandler { (packs, error) in guard error == nil else {
return
}
for pack in packs {
let userInfo = NSKeyedUnarchiver.unarchiveObjectWithData(pack.context) as! [String: String]
if userInfo["name"] == "My Offline Pack" {
// allready downloaded
return
}
}