Leaflet 从图层中获取传单标记

Leaflet 从图层中获取传单标记,leaflet,markers,Leaflet,Markers,我对传单不熟悉,正在尝试用不同的CSS样式实现一组标记 因此,我知道在向地图添加标记后,我可以通过在标记上调用getElement()来访问不同的CSS属性,例如: marker.addTo(map); marker.getElement().style.borderColor = '#000'; 这很好,但在向层添加标记时,由于发生TypeError(getElement()未定义),因此无法再使用该标记。以下是发生错误的示例代码: myLayer.addLayer(

我对传单不熟悉,正在尝试用不同的CSS样式实现一组标记

因此,我知道在向地图添加标记后,我可以通过在标记上调用getElement()来访问不同的CSS属性,例如:

    marker.addTo(map);
    marker.getElement().style.borderColor = '#000';
这很好,但在向层添加标记时,由于发生TypeError(getElement()未定义),因此无法再使用该标记。以下是发生错误的示例代码:

    myLayer.addLayer(marker);
    marker.getElement().style.borderColor = '#000';
我是否忽略了为添加到层中的标记和divicon设置CSS属性的更简单方法,还是有类似的方法可以访问JavaScript中添加的层标记和divicon?

欢迎使用

当未添加到地图上时(因为您的父级
myLayer
可能不会添加到地图本身),标记没有任何元素


如果您不需要单独和动态地更改太多样式,您可以使用图标/DivIcon选项。

因此我找到了一个适合我的解决方案。 其想法是扩展用于创建图标的功能。 最后一个答案很有帮助

    var borderSize = ...;
    L.DivIcon.Custom = L.DivIcon.extend({
        createIcon: function(oldIcon) {
               var icon = L.DivIcon.prototype.createIcon.call(this, oldIcon);
               icon.style.borderSize = borderSize;
               ...
               return icon;
        }
    })
    var icon = new L.DivIcon.Custom({
        ...
    });        
    var ll = L.latLng(entry.Longitude, entry.Latitude);
    var marker = L.marker(ll, {
      icon: icon
    })
    this.myLayer.addLayer(marker);

首先,感谢您的回答和热烈的欢迎!我已经在为静态CSS属性使用
className
选项。如果我理解正确,我将为标记分配一个唯一的类名,然后使用
getElementsByClassName()
获取标记?我用
className:'icon'+name+entry.id,
尝试了它,然后通过
var my_icon=document.getElementsByClassName(name+entry.id)[0]获取图标;my_icon.style.borderWidth=Math.trunc(borderSize)+“px”
但这似乎也不起作用,因为奇怪的是没有找到元素。让我换一种说法:如果标记不在地图上,它就不在DOM中,因此
document.getElementsByClassName
等将找不到它。相反,访问标记及其图标并更改其类名。你可以尝试改变个人风格,但那会复杂得多。啊,是的,我无法访问它,这是有道理的。但是,我需要为每个divicon分别设置至少一个borderSize,这就是您提到的第二种情况,对吗?我可能可以通过如下所述扩展divicon构造函数来实现这一点:(最后一条评论)。但我不确定这是否适用于我的情况,因为我需要向构造函数传递额外的数据。然后自己去尝试,这是找到解决方案的最佳方式,而不是无限期地谈论它。但我仍然相信,一组预定义的类以及您想要的CSS规则已经足够好了。