Leafet.js 如何使用外部代码突出显示整个图层组

Leafet.js how do I highlight an entire layer group with external code

我正在尝试使用页面其他地方的代码使用 JavaScript 突出显示整个图层组。我的群组是这样设置的:

var annexa_building =  new L.Polygon([
        [68.23682, -47.46094],[68.3668, -40.07812]...
  ], {'label': popup_annexa, 'popup': content_annexa}).addTo(map);
var annexb_building =  new L.Polygon([
        [68.82387, -29.729],[69.24837, -22.41211]...
  ], {'label': popup_annexb, 'popup': content_annexb}).addTo(map);

var academics_group = new L.LayerGroup([
    annexa_building,
    annexb_building
]);

我试图找到有关使用引用的组调用效果的文档,但找不到。我需要的是能够同时调用两层的高亮代码,像这样:

setHighlight(academics_group);

我也试过这样做(一次调用一个单独的图层):

<img src="images/1.png" class="img-swap" onclick="setHighlight('annexa_building')" />

还有这个:

jQuery(function(){
         $(".img-swap").on('click', function() {
            if ($(this).attr("class") == "img-swap") {
            this.src = this.src.replace("_off","_on");
            setHighlight("annexa_building");

            } else {
            this.src = this.src.replace("_on","_off");

            }
            $(this).toggleClass("on");

        });
});

但它报告说 layer.setStyle 不是函数。

函数 setHighlight(layer) 在地图中运行良好。

function setHighlight (layer) {
  if (highlight) {
    unsetHighlight(highlight);
  }
  layer.setStyle(style.highlight);
  highlight = layer;
}

关于解决这个问题的想法?谢谢!

根据文档,LayerGroup hasn't the setStyle() function. You should use FeatureGroup 是 LayerGroup 的扩展,具有 setStyle() 功能。

此外,您应该在整个组而不是每一层上调用 .addTo(map)。这样,如果您向组中添加新图层,它们将自动添加到地图中。