Загрузите Mbtiles с помощью Nutiteq SDK из Mapbox
Я выясняю, как загрузить mbtiles из mapbox, используя nutiteq SDK. Я знаю, как загрузить mbtiles в автономном режиме, используя этот код
// 1. Create tile data source from mbtiles file
MBTilesTileDataSource tileDataSource = new MBTilesTileDataSource("/sdcard/estonia_ntvt.mbtiles");
// 2. Load vector tile styleset
UnsignedCharVector styleBytes = AssetUtils.loadBytes("osmbright.zip");
MBVectorTileStyleSet vectorTileStyleSet = new MBVectorTileStyleSet(styleBytes);
// 3. Create vector tile decoder using the styleset
VectorTileDecoder vectorTileDecoder = new MBVectorTileDecoder(vectorTileStyleSet);
// 4. Create vector tile layer, using previously created data source and decoder
TileLayer vectorTileLayer = new VectorTileLayer(tileDataSource, vectorTileDecoder);
// 5. Add vector tile layer
mapView.getLayers().add(vectorTileLayer);
Есть ли способ загрузить его прямо из URL-адреса mapbox mbtiles, используя Nutiteq SDK?
1 ответ
Решение
Что вы подразумеваете под "mapbox mbtiles url", можете ли вы привести пример? Под mbtiles вы имеете в виду автономные пакеты?
Я могу думать о следующих URL-адресах MapBox:
а. MapBox как источник растровых данных в Интернете см. На https://developer.nutiteq.com/guides/raster-tile-sources
б. Чтобы MapBox использовался в качестве векторного источника в Интернете, вам также необходимо определить стили, и для этого нужно немного больше кодирования:
// load style file from assets. Nutiteq style is quite well compatible with MapBox Streets,
// even though NT vector tiles are a bit different
UnsignedCharVector styleBytes = AssetUtils.loadBytes("nutibright-v2.zip");
if (styleBytes != null){
// Create style set
MBVectorTileStyleSet vectorTileStyleSet = new MBVectorTileStyleSet(styleBytes);
MBVectorTileDecoder vectorTileDecoder = new MBVectorTileDecoder(vectorTileStyleSet);
// Create tile data source and layer for vector tiles
TileDataSource vectorTileDataSource = new HTTPTileDataSource(0, 14, "http://a.tiles.mapbox.com/v4/mapbox.mapbox-streets-v5/{zoom}/{x}/{y}.vector.pbf?access_token=pk...YOUR-MAPBOX-KEY");
VectorTileLayer baseLayer = new VectorTileLayer(vectorTileDataSource, vectorTileDecoder);
// add layer to map
mapView.getLayers().add(baseLayer);
}