2015-09-30 243 views
1

我正在計算使用nutiteq SDK從mapbox加載mbtiles的方式。我知道如何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); 

有沒有辦法直接使用Nutiteq SDK mapbox mbtiles網址加載它加載?

回答

1

你是什麼意思的「mapbox mbtiles url」,你能舉個例子嗎?通過mbtiles你的意思是離線套餐?

我能想到以下MapBox網址:

a。對於MapBox爲在線光柵來源見https://developer.nutiteq.com/guides/raster-tile-sources

b。對於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); 

    }