Как получить свойства слоев MapLibre?

#javascript #leaflet #mapbox #maplibre-gl

Вопрос:

Пожалуйста, помогите, я страдаю уже 5 дней. Как я могу получить всю layer Ids MapLibre карту целиком ?

 function addLayer(map, options, layer) {  let currentLayer = edges_data_api.find(  element =gt; element.edge_id === layer.feature.properties.edge_id)  map.setPaintProperty('lines', 'fill-color', ['interpolate', ['linear'],  ['get', currentLayer.lanes], 0, 'rgb(255, 255, 255)', 5, 'rgb(255, 0, 0)'])  }  

Вот как я определил карту с помощью MapLibre

 map.on('load', function() {  map.addSource('lines', {  type: 'geojson',  data: data  });   map.addLayer({  'id': 'lines',  'type': 'fill',  'source': 'lines',  'layout': {},  'paint': {  'fill-color': '#4682B4',  'fill-opacity': 0.8,  }  });  map.setPaintProperty('lines', 'fill-color', ['get', 'color']) })  

Ответ №1:

Как я знаю, для getAllLayers () нет api. Поэтому вы должны хранить список идентификаторов слоев самостоятельно.

 //global variable const layerIds = new Set()  map.on('load', function() {   layerIds.add('lines') //keep list of ids without duplicates   map.addSource('lines', {  type: 'geojson',  data: data  });   map.addLayer({  'id': 'lines',  'type': 'fill',  'source': 'lines',  'layout': {},  'paint': {  'fill-color': '#4682B4',  'fill-opacity': 0.8,  }  });  map.setPaintProperty('lines', 'fill-color', ['get', 'color']) })   //You can iterate your list ids where it is needed layerIds.forEach(value =gt; {//action here})  

Комментарии:

1. большое спасибо. Это не работает. У меня ничего нет, когда я консолю.log(значение)