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

时间:2015-11-16 16:11:42

标签: javascript jquery leaflet

我正在尝试使用页面上其他地方的代码使用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(图层)在地图中可以正常工作。

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

关于解决方案的想法?谢谢!

1 个答案:

答案 0 :(得分:0)

根据文档,LayerGroup没有setStyle()功能。您应该使用FeatureGroup,它是LayerGroup的扩展,并具有setStyle()函数。

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