为了账号安全,请及时绑定邮箱和手机立即绑定

Openlayers 基于缩放的对象可见性不起作用

Openlayers 基于缩放的对象可见性不起作用

慕斯王 2023-09-21 16:34:23
我想让我的元素基于缩放。当缩小到 19 时我不需要它可见,因为我的地图看起来不太好。我尝试使用maxResolution从layers.js文件派生的方法,当发现它时,因为整个地图是由QGIS2web插件生成的。不幸的是它不起作用我也尝试了该minZoom功能,但没有成功。我在这里找到的所有合理的例子:https://openlayers.org/en/latest/apidoc/module-ol_View.htmlhttps://openlayers.org/en/latest/examples/layer-zoom-limits.htmlhttps://github.com/Viglino/ol-ext/issues/51另一个线程说有关更改 maxResolution 值,但它也不起作用。https://gis.stackexchange.com/questions/160725/vector-layer-visibility-using-min-maxresolution-is-not-working-in-openlayers-2最后,我的代码如下所示:   var tekst2 = new ol.Overlay({   position: pos3,   minZoom: 19,   element: document.getElementsByClassName('tekscio')[1],   });   map.addOverlay(tekst2);我发现, minZoom 主要指的是地图画布的缩放下限。但这个配置:  var tekst2 = new ol.Overlay({  position: pos3,  element: document.getElementsByClassName('tekscio')[1],  maxResolution:0.42006699228392946,  });  map.addOverlay(tekst2);也没有用。我还在这里找到了一些方法:http://dev.openlayers.org/releases/OpenLayers-2.13.1/doc/apidocs/files/deprecated-js.htmlhttp://dev.openlayers.org/docs/files/OpenLayers/Layer/FixedZoomLevels-js.html#OpenLayers.Layer.FixedZoomLevels.getOLZoomFromMapObjectZoom但看起来它们已被弃用。我应该在这段代码中做什么?这里还需要提供我所缺少的其他东西吗?我想要基于缩放级别的文本。以防万一我在这里发送带有 javascript 代码的 JS 小提琴:https://jsfiddle.net/uxkcyomf/
查看完整描述

1 回答

?
拉丁的传说

TA贡献1789条经验 获得超8个赞

我想让我的元素基于缩放。当缩小到 19 时我不需要它可见,因为我的地图看起来不太好。

您可以简单地根据当前缩放级别以类似于此的方式显示/隐藏元素

var currZoom = map.getView().getZoom();

map.on("moveend", function(e) {

  var newZoom = map.getView().getZoom();

  if (currZoom != newZoom) {

    if (newZoom > 19) {

        document.getElementById("vienna").style.display = "none";

    } else {

        document.getElementById("vienna").style.display = "unset";

    }

    currZoom = newZoom;

  }

}); 


查看完整回答
反对 回复 2023-09-21
  • 1 回答
  • 0 关注
  • 168 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信