2017-06-29 134 views
1

我一直在使用Mapbox的Android SDK作爲原型,並想知道是否有人知道如何使用不是來自Mapbox服務器的矢量瓷磚貼圖。例如,我想要使用Mapbox的Android SDK加載Mapzen或甚至OpenMapTiles矢量磁貼地圖,而不是加載Mapbox的默認地圖風格。Mapbox Android SDK第三方矢量瓷磚

回答

2

你可以使用MapView#setStyleUrl來做到這一點。

首先在assets/目錄中創建mapzen.json這個簡單的樣式(請務必與真正的關鍵,以取代YOUR_MAPZEN_API_KEYhttps://mapzen.com/developers/sign_up

{ 
"version": 8, 
"sources": { 
"osm": { 
    "type": "vector", 
    "tiles": ["https://vector.mapzen.com/osm/all/{z}/{x}/{y}.mvt?api_key=[YOUR_MAPZEN_API_KEY]"] 
} 
}, 
"layers": [{ 
    "id": "background", 
    "type": "background", 
    "paint": { 
     "background-color": "#41afa5" 
    } 
}, { 
    "id": "water", 
    "type": "fill", 
    "source": "osm", 
    "source-layer": "water", 
    "filter": ["==", "$type", "Polygon"], 
    "paint": { 
    "fill-color": "#3887be" 
} 
}] 
} 

然後設置自定義樣式您MapView

mapView.setStyleUrl("asset://mapzen.json"); 

最後,加載地圖:

mapView.getMapAsync(new OnMapReadyCallback() { 
    @Override 
    public void onMapReady(MapboxMap mapboxMap) { 
    //customize map 
    } 
}); 
+0

太棒了!那麼由於Mapbox的緣故,必須使用.json文件還是第三方? – jlvmoster

+0

嘿,所以我嘗試了這一點,但我使用自定義服務器使用Apache2和PHP來主辦一個離線地圖。我使用tileserver-php找到[這裏](https://github.com/klokantech/tileserver-php)。我使用服務器的http地址替換了'tiles'鍵中的url:'http://public_ip_address/tileserver/tileserver.php?/index.json?/ mbtiles/united_states_of_america/{z}/{x}/{y} .pbf',但該應用只顯示背景顏色。請幫忙! – jlvmoster

+0

Nvm我得到它的工作,謝謝! – jlvmoster