Mapbox Android SDK第三方矢量图块

时间:2017-06-29 18:04:44

标签: java android openstreetmap mapbox mapzen

我一直在使用Mapbox的Android SDK作为原型,并且想知道是否有人知道如何使用不是来自Mapbox服务器的矢量图块地图。例如,我想使用Mapbox的Android SDK加载Mapzen甚至OpenMapTiles矢量图块地图,而不是加载Mapbox的默认地图样式。

1 个答案:

答案 0 :(得分:4)

您可以使用MapView#setStyleUrl执行此操作。

首先使用这种简单的样式在mapzen.json目录中创建assets/(务必使用真实密钥替换YOUR_MAPZEN_API_KEYhttps://bugs.chromium.org/p/chromium/issues/detail?id=435547#c33

{
"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
  }
});