Я пытаюсь загрузить различные пакеты регионов, используя mapBox в swift и Xcode 10.
Идея заключается в том, что когда пакет загружается, другой запускается с новым регионом.
Итак, для этого я написал этот код:
func startDowloadMapOffline(step:TravelStep){
downloadingMapOffline = true
let region = MGLTilePyramidOfflineRegion(styleURL: MGLStyle.streetsStyleURL, bounds: MGLCoordinateBounds(sw: CLLocationCoordinate2D(latitude: step.lattitudeWest, longitude: step.longitudeWest), ne: CLLocationCoordinate2D(latitude: step.lattitudeNorth, longitude: step.longitudeNorth)), fromZoomLevel: 8, toZoomLevel: 12)
// Store some data for identification purposes alongside the downloaded resources.
let userInfo = ["name\(startStepIndex)": "My Offline Pack \(startStepIndex)"]
let context = NSKeyedArchiver.archivedData(withRootObject: userInfo)
// Create and register an offline pack with the shared offline storage object.
MGLOfflineStorage.shared.addPack(for: region, withContext: context) { (pack, error) in
guard error == nil else {
// The pack couldn’t be created for some reason.
self.delegate?.downloadDidFaileWithError(with: "error download")
return
}
// Start downloading.
pack!.resume()
}
}
первый пакет загружается, но когда я перехожу ко второму, pack.resume()
не запускается !!!!
в методе offlinePackProgressDidChange
я заметил, что он переходит непосредственно в состояние, когда completedRessources
равно expectedRessources
со значениями первого пакета ...
if completedResources == expectedResources {
let byteCount = ByteCountFormatter.string(fromByteCount: Int64(pack.progress.countOfBytesCompleted), countStyle: ByteCountFormatter.CountStyle.memory)
print("Offline pack “\(userInfo["name"] ?? "unknown")” completed: \(byteCount), \(completedResources) resources")
startStepIndex = startStepIndex + 1
delegate?.downloadStepTilesDidFinish(num: startStepIndex)
} else {
// Otherwise, print download/verification progress.
print("Offline pack “\(userInfo["name"] ?? "unknown")” has \(completedResources) of \(expectedResources) resources — \(progressPercentage * 100)%.")
}