Javascript 传单JS:如何访问和更新图层内的标记

Javascript 传单JS:如何访问和更新图层内的标记,javascript,leaflet,layer,markers,Javascript,Leaflet,Layer,Markers,我有一个不同位置的列表。每次有人单击某个位置时,我都会从地图中删除标记层,然后触发一个功能,该功能会生成一个新的标记层,该标记层的位置与以前相同,只是这次会对所选位置使用不同的图标 我的问题是,我不想删除和添加图层,而只是想更新特定标记的图标,但我找不到访问它的方法 有人提到这可以通过.eachLayer函数实现,但我不知道如何实现,因为这是控制层,而不是标记 markers = new L.featureGroup(); function updateMarker(locations,

我有一个不同位置的列表。每次有人单击某个位置时,我都会从地图中删除标记层,然后触发一个功能,该功能会生成一个新的标记层,该标记层的位置与以前相同,只是这次会对所选位置使用不同的图标

我的问题是,我不想删除和添加图层,而只是想更新特定标记的图标,但我找不到访问它的方法

有人提到这可以通过.eachLayer函数实现,但我不知道如何实现,因为这是控制层,而不是标记

markers = new L.featureGroup(); 


function updateMarker(locations, clickedID){
    //Adding all markers on map
    for (var i = 0; i < locations.length; i++) 
    {       
        //red marker for the selected location
        if (locations[i][2] == clickedID){
            marker = new L.marker([locations[i][0],locations[i][1]],{
                icon: redIcon})
                .bindPopup(locations[i][3]);
            markers.addLayer(marker);   
        }
        else{
            //add regular marker
            marker = new L.marker([locations[i][0],locations[i][1]])
                .bindPopup(locations[i][3])
                .addTo(map);
            markers.addLayer(marker);
        }


    } ;

    map.addLayer(markers);
}
markers=新的L.featureGroup();
函数更新标记器(位置,单击EDID){
//在地图上添加所有标记
对于(变量i=0;i
没有示例,您想要实现的目标不是100%清楚

但是,如果您想操作标记(例如使用setIcon()),则保存所有标记的数组要容易得多

var markers = {};   // list of created markers
创建标记时,将其添加到数组中

markers[theID] = L.marker();
map.addLayer(markers[theID]);
然后,您可以轻松修改标记,而无需扫描featureGroup

markers[theID].setIcon();

因此,我将不得不使用一个列表,而不是传单JS层,并分别在地图上添加每个标记,对吗?如果setIcon()立即更新标记的图标,我认为它会起作用。谢谢你,肯定有用。谢谢。:)也许你知道是否有一种简单的方法可以取回默认图标,或者我必须用蓝色图标创建一个新的自定义图标吗?你可以使用L.icon.default:请原谅我的无知,但是你能详细说明一下
[theID]
是什么吗?一般来说,我对传单和数组非常陌生。theID是一个唯一的id(您将为每个标记创建一个),当您需要时,它将用于从数组中检索标记。例如,看一看(数组是从这个文件创建的)