我正在尝试使用页面上其他地方的代码使用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;
}
关于解决方案的想法?谢谢!
答案 0 :(得分:0)
根据文档,LayerGroup没有setStyle()
功能。您应该使用FeatureGroup,它是LayerGroup的扩展,并具有setStyle()
函数。
此外,您应该在整个群组上调用.addTo(map)
而不是每个层。这样,如果您向组中添加新图层,它们将自动添加到地图中。