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

Openlayers zoom-based object visibility not working

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

我尝试使用从layers.js文件导出的maxResolution方法,当它被发现时,整个地图是由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 主要指的是地图的缩放下限 canvas。

但是这个配置:

  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 fiddle:

https://jsfiddle.net/uxkcyomf/

I would like to have my element zoom-based. I don't need it visible when zooming out of 19, because my map doesn't look nice.

您可以简单地 show/hide 一个元素,具体取决于当前的缩放级别,方法与此类似(缩放更改处理程序取自 https://gis.stackexchange.com/a/309404/70847):

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;
  }
});