1
我一直在使用Mapbox的Android SDK作爲原型,並想知道是否有人知道如何使用不是來自Mapbox服務器的矢量瓷磚貼圖。例如,我想要使用Mapbox的Android SDK加載Mapzen或甚至OpenMapTiles矢量磁貼地圖,而不是加載Mapbox的默認地圖風格。Mapbox Android SDK第三方矢量瓷磚
我一直在使用Mapbox的Android SDK作爲原型,並想知道是否有人知道如何使用不是來自Mapbox服務器的矢量瓷磚貼圖。例如,我想要使用Mapbox的Android SDK加載Mapzen或甚至OpenMapTiles矢量磁貼地圖,而不是加載Mapbox的默認地圖風格。Mapbox Android SDK第三方矢量瓷磚
你可以使用MapView#setStyleUrl
來做到這一點。
首先在assets/
目錄中創建mapzen.json
這個簡單的樣式(請務必與真正的關鍵,以取代YOUR_MAPZEN_API_KEY
)https://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
}
});
太棒了!那麼由於Mapbox的緣故,必須使用.json文件還是第三方? – jlvmoster
嘿,所以我嘗試了這一點,但我使用自定義服務器使用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
Nvm我得到它的工作,謝謝! – jlvmoster