当前位置: 首页 > 知识库问答 >
问题:

标记群集传单:动态修改图标

易风华
2023-03-14

我正在使用传单和标记集群插件,我想动态修改从孩子在里面的集群图标。

我的代码可以工作,但不需要我想要的:在iconCreateFunction函数中,我想计算“ClusterBatteriEfaible”的标记,但我不知道如何将其作为参数发送。有什么建议吗?

var ClusterBatterieFaible = L.markerClusterGroup({    });

var cluster = L.markerClusterGroup({
iconCreateFunction: function (cluster) {
    var childCount = cluster.getChildCount();
    if (childCount > 1){
        var c = ' marker-cluster-large';
    }
    else {
        var c = ' marker-cluster-small';
    }
    return new L.DivIcon({ html: '<div><span>' + childCount + '</span></div>', className: 'marker-cluster' + c, iconSize: new L.Point(40, 40) });
}

});

For loop
  if batteryOk :    
     L.marker(latlng, {icon: mainIconE}).bindPopup("blabla");}   }).addTo(cluster)

  if batteryNotOk : 
     L.marker(latlng, {icon: mainIconE}).bindPopup("blabla");}   }).addTo(ClusterBatterieFaible).addTo(cluster)

共有1个答案

齐鹏程
2023-03-14

sur SO Bienvenue!

不要将您的标记添加到多个MarkerClusterGroups(MCG)中。这将打破他们的集群,因为他们将“混淆”标记属于哪个集群。

相反,您可以简单地使用一个标记数组,或者一个l.layergroup,将标记添加到其中(但不要将其添加到映射中!),用于要测试的组(如果我的理解是正确的,则为“Batterynotok”)。并且只将剩余的MCG添加到地图中。

要测试是否在层组中添加了给定的标记,只需使用mylayergroup.haslayer(marker)

所以您的IconCreateFunction应该类似于:

function (cluster) {
    var markers = clusters.getAllChildMarkers(),
        iconClass = "allBatteriesOk";

    for (var i = 0; i < markers.length; i += 1) {
        if (myArray.indexOf(markers[i]) >= 0) {
            iconClass = "atLeastOneBatteryNotOk";
            break;
        }
    }

    return L.divIcon({
        html: '<div><span>' + childCount + '</span></div>',
        className: iconClass,
        iconSize: new L.Point(40, 40)
    });
}
 类似资料:
  • 更改集群(命令)是更新现有集群上的属性。 在本章中,将学习如何添加或修改集群的属性。 以下语句是命令的基本语法。 以下是有关上述语法中选项的详细信息。 - 定义集群名称。 - 定义您想要更改的属性。 - 定义您要为此属性设置的值。 以下表中提供了可与命令一起使用的属性列表。 名称 类型 描述 NAME 字符串 更改群集名称。 STATUS 字符串 更改群集状态。允许的值是和。 默认情况下,群集在线

  • 有没有一种方法可以随意改变本地传单中的标记颜色?我使用的是svg元素,可以进行样式化。我知道使用Mapbox.js是可能的 编辑:为了澄清我打算做的:如果你通过双击或其他方式向地图添加标记,它应该有随机的颜色。为了实现这一点,我想使用svg图标来对标记进行样式化。 这是我的代码:

  • 我试图在点击时更改标记的图标编号。我使用的是角度谷歌地图。我正在使用本地资产文件夹而不是服务API设置iNurl。 单击标记时,如何更改上述图标。

  • 我是一个新的传单,并试图实现不同CSS样式的一组标记。 因此,我意识到,在向映射添加标记后,我可以通过调用标记上的getElement()来访问不同的CSS属性,例如:

  • 问题内容: 我有一个meta标签(苹果智能横幅),我想即时修改参数。但是,目前无法正常工作: 我假设在创建头部之前调用了ng-init?如果可以,我可以通过加载方法修改meta吗? 这是HTML: 部分: 控制器: 问题答案: 尝试服务和指令 http://jsfiddle.net/VnXYB/

  • 我有一个带有标记的映射,由一个json文件生成,其中包含一个数值文本。对于标记生成,我使用Beaufify标记插件。这是我使用的代码的一部分 我想用最好和最干净的方法,改变选项上的变量文本('markers[I].temperatura'),在按钮上使用onclick操作。