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