Mapbox Android SDK Сторонние векторные плитки

Я использовал Android SDK от Mapbox для прототипа, и мне было интересно, знает ли кто-нибудь, как использовать векторную карту листов, которая не принадлежит серверам Mapbox. Например, я хочу загрузить векторные карты мозаики Mapzen или даже OpenMapTiles, используя SDK Mapbox для Android, без особой разницы по сравнению со стилями карт Mapbox по умолчанию.

1 ответ

Решение

Вы можете сделать это, используя MapView#setStyleUrl,

Сначала создать mapzen.json в вашем assets/ каталог с этим простым стилем (не забудьте заменить 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
  }
});
Другие вопросы по тегам