How to interact with leaflet marker layer from outside the map?

前端 未结 2 816
借酒劲吻你
借酒劲吻你 2020-12-04 10:39

I have a leaflet map showing points for public art pieces, rendered from GeoJSON. Next to the map, I created a list of the pieces from the same GeoJSON data and want to be a

2条回答
  •  误落风尘
    2020-12-04 10:50

    I know this is an older question but Leaflet is on it's way to providing a built-in solution and there is a (somewhat) built-in way to achieve it now...

    The approach would be use the layerGroup interface. It provides a method, getLayer, that sounds like it would be perfect get our markers using an ID. However, at this time, Leaflet does not provide any way to specify a custom ID or name.

    This issue on Github discusses how this should be done. With that said, you can get and save the auto-generated ID of any Marker (or iLayer for that matter) like so:

    let people = [...],
        group = L.layerGroup()
    
    people.forEach(person => {
        let marker = // ... create marker
    
        group.addLayer( marker );
        person.marker_id = group.getLayerId(marker)
    })
    

    Now that we have every marker's ID saved with each backing object in our array of data we can easily get the marker later on like so:

    group.getLayer(person.marker_id)
    

    See this pen for a full example and this question for more options...

提交回复
热议问题