如何使用MapBox读取离线地图

时间:2018-10-30 16:37:03

标签: ios swift mapbox offline

当我尝试在iOS应用程序中加载脱机Mapbox地图时遇到问题。在下面的文档中,他们没有说明下载后如何加载地图。 https://www.mapbox.com/ios-sdk/maps/examples/offline-pack/

现在,为了加载离线地图,我添加了此代码,该代码将cache.db文件从临时缓存复制到此链接中所述的有效路径 https://github.com/mapbox/mapbox-gl-native/wiki/Sideloading-offline-maps

windows-build-tools

但是我没有使地图区域离线!!!!请帮忙

最诚挚的问候。

1 个答案:

答案 0 :(得分:0)

嘿,如果您已经下载了区域(使用链接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)

        }
    }
}