使用 CartoDB SDK 解码 Bundle MBTiles 文件中的图块时出错
Error decoding tiles in Bundle MBTiles file using CartoDB SDK
我按照以下步骤创建我的 .mbtiles
- 我使用 osm-carto 样式和来自 geofabrik 的资源来创建我的地图
- 我使用 Kosmtik 编辑器查看地图并使用插件 (kosmtik-mbtiles-exporter) 导出 .mbtiles
这是我的 swift 代码,用于加载我的 bundle .mbtiles 文件
override func viewDidLoad() {
super.viewDidLoad()
map = NTMapView()
map.frame = view.bounds
//Need to add as a subview,
view.addSubview(map)
// Get base projection from mapView
let projection = map.getOptions().getBaseProjection();
// Create a local vector data source
let source: NTTileDataSource? = createTileDataSource()
let baseLayer = NTCartoOnlineVectorTileLayer(style: .CARTO_BASEMAP_STYLE_VOYAGER)
let decoder: NTVectorTileDecoder? = baseLayer?.getTileDecoder()
let layer = NTVectorTileLayer(dataSource: source, decoder: decoder)
map?.getLayers()?.add(layer)
map.getOptions().setPanningMode(NTPanningMode.PANNING_MODE_STICKY)
}
func createTileDataSource() -> NTTileDataSource {
let name: String = "cuba.output"
let format : String = "mbtiles"
// file-based local offline datasource
let source: String? = Bundle.main.path(forResource: name, ofType: format)
let vectorTileDataSource: NTTileDataSource? = NTMBTilesTileDataSource(minZoom: 0, maxZoom: 14, path: source)
return vectorTileDataSource!
}}
但是当 运行 应用程序给我这个错误时
Sep 18 12:53:00 WeGoCuba[1547] : MBTilesTileDataSource::loadTile: Loading MapTile [x=0, y=0, zoom=0, frameNr=0, id=0]
Sep 18 12:53:00 WeGoCuba[1547] : MBVectorTileDecoder::decodeTile: Exception while decoding: unknown pbf type
Sep 18 12:53:00 WeGoCuba[1547] : VectorTileLayer::FetchTask:Failed to decode tile
为什么给我这个错误?
.mbtiles 文件有误吗?如果是这样
你能给出创建正确的步骤吗?
似乎使用 kosmtik 可以获得光栅 mbtiles,而不是矢量 mbtiles。这些可以通过以下方式轻松添加到地图中,但这些都是预先设计好的,就像任何栅格数据源一样。
MBTilesTileDataSource mbTileDataSource = new MBTilesTileDataSource(0, 18, path); // mbtiles file has to be in storage!
RasterTileLayer mbTileRasterLayer = new RasterTileLayer(mbTileDataSource);
mapView.getLayers().add(mbTileRasterLayer);
我按照以下步骤创建我的 .mbtiles
- 我使用 osm-carto 样式和来自 geofabrik 的资源来创建我的地图
- 我使用 Kosmtik 编辑器查看地图并使用插件 (kosmtik-mbtiles-exporter) 导出 .mbtiles
这是我的 swift 代码,用于加载我的 bundle .mbtiles 文件
override func viewDidLoad() {
super.viewDidLoad()
map = NTMapView()
map.frame = view.bounds
//Need to add as a subview,
view.addSubview(map)
// Get base projection from mapView
let projection = map.getOptions().getBaseProjection();
// Create a local vector data source
let source: NTTileDataSource? = createTileDataSource()
let baseLayer = NTCartoOnlineVectorTileLayer(style: .CARTO_BASEMAP_STYLE_VOYAGER)
let decoder: NTVectorTileDecoder? = baseLayer?.getTileDecoder()
let layer = NTVectorTileLayer(dataSource: source, decoder: decoder)
map?.getLayers()?.add(layer)
map.getOptions().setPanningMode(NTPanningMode.PANNING_MODE_STICKY)
}
func createTileDataSource() -> NTTileDataSource {
let name: String = "cuba.output"
let format : String = "mbtiles"
// file-based local offline datasource
let source: String? = Bundle.main.path(forResource: name, ofType: format)
let vectorTileDataSource: NTTileDataSource? = NTMBTilesTileDataSource(minZoom: 0, maxZoom: 14, path: source)
return vectorTileDataSource!
}}
但是当 运行 应用程序给我这个错误时
Sep 18 12:53:00 WeGoCuba[1547] : MBTilesTileDataSource::loadTile: Loading MapTile [x=0, y=0, zoom=0, frameNr=0, id=0]
Sep 18 12:53:00 WeGoCuba[1547] : MBVectorTileDecoder::decodeTile: Exception while decoding: unknown pbf type
Sep 18 12:53:00 WeGoCuba[1547] : VectorTileLayer::FetchTask:Failed to decode tile
为什么给我这个错误? .mbtiles 文件有误吗?如果是这样 你能给出创建正确的步骤吗?
似乎使用 kosmtik 可以获得光栅 mbtiles,而不是矢量 mbtiles。这些可以通过以下方式轻松添加到地图中,但这些都是预先设计好的,就像任何栅格数据源一样。
MBTilesTileDataSource mbTileDataSource = new MBTilesTileDataSource(0, 18, path); // mbtiles file has to be in storage!
RasterTileLayer mbTileRasterLayer = new RasterTileLayer(mbTileDataSource);
mapView.getLayers().add(mbTileRasterLayer);