Как читать офлайн карту используя MapBox - PullRequest
0 голосов
/ 30 октября 2018

У меня проблема при попытке загрузить автономную карту mapbox в моем приложении iOS. В документации ниже они не объясняют, как загрузить карту после загрузки. https://www.mapbox.com/ios-sdk/maps/examples/offline-pack/

Теперь, чтобы загрузить автономную карту, я добавил этот код, который копирует файл cache.db из временного кэша в допустимый путь, как описано в этой ссылке https://github.com/mapbox/mapbox-gl-native/wiki/Sideloading-offline-maps

let sourceURL = NSURL(fileURLWithPath:"\(NSHomeDirectory())/Library/Application Support/*****************/.mapbox/cache.db")
        let TemporaryPathURL = NSURL(fileURLWithPath: "\(NSHomeDirectory())/Documents/***********")
        let databaseURL = TemporaryPathURL.appendingPathComponent("cache.db")
        if !(FileManager.default.fileExists(atPath: (databaseURL?.absoluteString)!)) {
            do {
                try? FileManager.default.copyItem(at: sourceURL as URL, to: databaseURL!)
            } catch {
                print ("ERROR: Fichier existant !!!!")
            }
        }

но я не получил регион карты в автономном режиме !!!! любая помощь, пожалуйста

С уважением.

1 Ответ

0 голосов
/ 14 марта 2019

Эй, если вы скачали регион (используя ссылку https://www.mapbox.com/ios-sdk/maps/examples/offline-pack/),, вы можете попробовать этот код для загрузки карты

/// загрузить автономную карту

func loadOffline(){

    //if app is offline load tiles
    if (MGLOfflineStorage.shared.packs?.count ?? 0) > 0{
        var index = Int()
        for i in 0..<(MGLOfflineStorage.shared.packs?.count ?? 0){
            let dict = NSKeyedUnarchiver.unarchiveObject(with: MGLOfflineStorage.shared.packs?[i].context ?? Data()) as! [String: Any]
            if (Region_Name) == JSON(dict["name"] ?? "").stringValue{
                index = i
                break
            }
        }

        mapView.styleURL =  MGLOfflineStorage.shared.packs?[index].region.styleURL
        if let tiles = MGLOfflineStorage.shared.packs?[index].region as? MGLTilePyramidOfflineRegion{

            mapView.setVisibleCoordinateBounds(tiles.bounds, animated: true)
            guard ((self.model.data?.count ?? 0) != 0) || ((self.model.mapData?.regionName ?? "") == "") else{
                return
            }
            self.mapView.zoomLevel = tiles.maximumXoomLevel
            self.mapView.centerCoordinate = CLLocationCoordinate2D(latitude: JSON(self.model.data?[0].latitude ?? "").doubleValue, longitude: JSON(self.model.data?[0].longitude ?? "").doubleValue)

        }
    }
}
...