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

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


person wandergis    schedule 17.06.2016    source источник


Ответы (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. Взгляните на консоль.

person kmandov    schedule 17.06.2016
comment
Я имею в виду, что если я не знаю исходные слои. Например: map.addSource() добавить пользовательский сервис векторных слоев, поэтому, возможно, иногда мы не знаем идентификатор исходного слоя и имя слоя, поэтому, если есть функция для получения исходного слоя метаинформация может быть очень полезной, поэтому мы можем добавить источник со стилем по умолчанию. - person wandergis; 17.06.2016

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

person Lucas Wojciechowski    schedule 17.06.2016