#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(значение)