0

请帮忙,我已经痛苦了5天了。我怎样才能得到所有layer IdsMapLibre地图?

function addLayer(map, options, layer) {
    let currentLayer = edges_data_api.find(
    element => 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'])
})
4

1 回答 1

0

据我所知, getAllLayers()没有 api 。所以你应该自己保留层的ID列表。

//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 => {//action here})
于 2021-11-30T01:18:02.443 回答