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

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

https://img3.mukewang.com/650c003b0001814f06330395.jpg

我尝试使用maxResolution从layers.js文件派生的方法,当发现它时,因为整个地图是由QGIS2web插件生成的。不幸的是它不起作用


我也尝试了该minZoom功能,但没有成功。


我在这里找到的所有合理的例子:


https://openlayers.org/en/latest/apidoc/module-ol_View.html


https://openlayers.org/en/latest/examples/layer-zoom-limits.html


https://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.html


http://dev.openlayers.org/docs/files/OpenLayers/Layer/FixedZoomLevels-js.html#OpenLayers.Layer.FixedZoomLevels.getOLZoomFromMapObjectZoom


但看起来它们已被弃用。


我应该在这段代码中做什么?这里还需要提供我所缺少的其他东西吗?


我想要基于缩放级别的文本。


以防万一我在这里发送带有 javascript 代码的 JS 小提琴:


https://jsfiddle.net/uxkcyomf/


慕斯王
浏览 326回答 1
1回答

拉丁的传说

我想让我的元素基于缩放。当缩小到 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;  }}); 
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript