Leaflet: 添加在 DivIcon 上设置 css 样式的功能

创建于 2017-01-06  ·  3评论  ·  资料来源: Leaflet/Leaflet

我希望能够在创建 DivIcon 时在其上设置 css 样式。
目前你只能配置一个 css 类。

用例:
我有一个定义标记图标形状的 css 类,但是图标的颜色是根据数据库中的数据动态设置的,因此不能在 css 类中进行硬编码。

最有用的评论

此功能可以由L.MarkergetElement()方法覆盖,例如:

var marker = new L.Marker(myCenter, {
  icon: L.divIcon()
});
map.addLayer(marker);

marker.getElement().style.border = '5px dotted lime';
marker.getElement().style.width = '50px';
marker.getElement().style.height = '50px';

请参阅一个工作示例

这是一种边缘情况,所以我宁愿建议扩展L.DivIcon类以添加一些自定义样式,阅读有关编写插件的教程。 它会是这样的

L.DivIcon.CustomColor = L.DivIcon.extend({
    createIcon: function(oldIcon) {
           var icon = L.DivIcon.prototype.createIcon.call(this, oldIcon);
           icon.style.backgroundColor = this.options.color;
           return icon;
    }
})

我个人认为这不会是一个广泛使用的功能,所以我现在将关闭它。

所有3条评论

你好,
图标的颜色是什么意思? 我在 css 中设置了 background-color 并且 DivIcon 改变了颜色
screen shot 2017-01-06 at 6 10 18 pm

这不是你需要的吗? 你能更具体一点吗?

@samik88

正如我在用例中指定的那样,标记图标的颜色(RGB 颜色代码)是从带有标记坐标的数据库中检索的,因此无法在 css 类中定义它(这样做将涉及创建 16777215 css 类(每个 rgb 颜色代码一个,不包括不透明度),这将是一件愚蠢的事情)。

您可以通过添加一个文本字段来更改示例以查看用例,您可以为标记输入 rgb 颜色,然后您会发现您无法在 DivIcon 上设置它,因此无法更改标记图标颜色。

要做到这一点将涉及能够在生成的 DIV 上设置 css 样式属性

此功能可以由L.MarkergetElement()方法覆盖,例如:

var marker = new L.Marker(myCenter, {
  icon: L.divIcon()
});
map.addLayer(marker);

marker.getElement().style.border = '5px dotted lime';
marker.getElement().style.width = '50px';
marker.getElement().style.height = '50px';

请参阅一个工作示例

这是一种边缘情况,所以我宁愿建议扩展L.DivIcon类以添加一些自定义样式,阅读有关编写插件的教程。 它会是这样的

L.DivIcon.CustomColor = L.DivIcon.extend({
    createIcon: function(oldIcon) {
           var icon = L.DivIcon.prototype.createIcon.call(this, oldIcon);
           icon.style.backgroundColor = this.options.color;
           return icon;
    }
})

我个人认为这不会是一个广泛使用的功能,所以我现在将关闭它。

此页面是否有帮助?
0 / 5 - 0 等级