从图层获取传单标记

时间:2017-05-19 22:40:27

标签: leaflet markers

我是传单的新手,我正在尝试使用不同的CSS样式实现一组标记。

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

    marker.addTo(map);
    marker.getElement().style.borderColor = '#000';

这很好用,但是当向图层添加标记时,由于发生了TypeError(getElement()未定义),因此无法再使用此标记。以下是发生错误的示例代码:

    myLayer.addLayer(marker);
    marker.getElement().style.borderColor = '#000';

我是否忽略了为添加到图层的标记和divicons设置CSS-Attributes的简单方法,或者是否有类似的方法来访问JavaScript中添加图层的标记和divicons?

2 个答案:

答案 0 :(得分:1)

所以我找到了一个适合我的解决方案。 我们的想法是扩展用于创建图标的功能。 这里的最后答案github.com/Leaflet/Leaflet/issues/5231帮助了很多。

    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);

答案 1 :(得分:0)

欢迎来到SO!

如果未添加到地图上(因为您的父myLayer可能未添加到地图本身),则标记没有任何元素。

如果您不需要单独动态更改太多样式,则可以使用Icon / DivIcon的className选项。