发生缩放时是否可以隐藏图层上的所有要素?我已尝试在图层上设置可见和不透明度属性,以便在缩放时显示。此外,我还尝试将每个功能的样式设置为“没有”'但它似乎没有用。我尝试过这两种选择:
1
function hideGraphicsFeatures(hide) {
if(hide) {
graphicsLayer.setVisible(false);
} else {
graphicsLayer.setVisible(true);
}
map.render();
}
2
function hideGraphicsFeatures(hide) {
var features = graphicsLayer.getFeatures();
if(hide) {
for (var i = features.length - 1; i >= 0; i--) {
features[i].style.display = 'none';
};
} else {
for (var i = features.length - 1; i >= 0; i--) {
features[i].style.display = ''; // show. Set to anything but 'none'
};
}
map.render();
}
答案 0 :(得分:1)
尝试:
function zoomChanged() {
zoom = map.getZoom();
if (zoom >=15) {
graphicsLayer.setVisibility(true);
}
else if (zoom < 15) {
graphicsLayer.setVisibility(false);
}
}
然后使用:
调用该函数map.events.register("zoomend", map, zoomChanged);
其中“map”是地图初始化的变量。这些组合可根据缩放级别打开和关闭图层的可见性。如果这不是你想要的,你可以在if / else块中使用不同的指示符。我想你只是错过了事件处理程序。
答案 1 :(得分:1)
我相信我知道你在找什么。当地图上显示许多图层上的数万个要素时,我必须做类似的事情以提高缩放/平移性能。对于平移我设置图层&#39;当第一张地图“指针”时,false
的可见度触发事件并将其设置回“移动”状态。事件(您可能需要一些额外的处理来避免冗余操作和数据重新加载)。
对于缩放,它有点棘手,但幸运的是,您可以使用自定义函数覆盖ol.interaction.MouseWheelZoom
处理程序:
ol.interaction.MouseWheelZoom.handleEvent = myFunction(evt){
// here you set the layers to invisible and set the new map zoom level
// based on the event's wheel value...
}
之后在&#39; zoomend&#39;事件处理程序,您可以使图层可见。如果你只是使用按钮放大/缩小,那么它很容易隐藏/显示图层。 它对我有用,在某些情况下它是一个很好的解决方法。
答案 2 :(得分:-1)
也许你可以做到这一点。 但是,对不起,如果这对你没有帮助。
function showGraphic () {
$('#Graphic1').hide();
$('#Graphic2').show(2000);
$('#Graphic3').hide();
$('#Graphic4').hide();
}