Можем ли мы иметь функцию, которая может получить метаинформацию источника, чтобы узнать идентификатор слоя и тип слоя при добавлении неизвестных векторных плиток?

Можем ли мы иметь функцию, которая может получить метаинформацию источника для перечисления идентификатора и типа слоя при добавлении неизвестного сервиса векторных плиток? Я думаю, что это может помочь нам правильно оформить векторный сервис и создать стиль по умолчанию для разных слоев (точка - круг, полигон - заливка, линия - линия).

2 ответа

Ты можешь позвонить map.getStyle().layers чтобы найти слои, определенные в текущем стиле.

Вот как вы можете получить id и type каждого слоя:

var map = new mapboxgl.Map({
    container: 'map',
    style: 'mapbox://styles/mapbox/light-v9',
    zoom: 13,
    center: [-122.447303, 37.753574]
});

map.on('load', function () {    
    var layersMeta = map.getStyle().layers
        .map(function(layer) { 
            return [layer.id, layer.type];
        });
   console.log(layersMeta);   
});

И вот соответствующий jsfiddle. Посмотрите на консоль.

К сожалению, не существует стандартного способа перечислить все слои в источнике векторных листов. Источники Mapbox предоставляют vector_layers объект в их TileJSON, но поскольку эта функция не является стандартной, она недоступна в GL JS API.

Другие вопросы по тегам