【问题标题】:Relative Max and Min Zoom - Openlayers相对最大和最小缩放 - Openlayers
【发布时间】:2020-01-16 07:16:53
【问题描述】:

我目前正在开展一个项目,其目标是使用静态图像层来显示实时数据。我们已经取得了相当大的进展,事情进展顺利。我注意到的一个问题是,例如,在最小缩放时地图上显示的 ImageLayer 的大小与浏览器的分辨率有关。我在 Openlayers 文档中做了一些研究,但我找不到解决这个问题的确切方法。同样在初始化地图时将视图中的分辨率设置为1,但是仍然有一些浏览器分辨率在完全缩小时无法显示整个地图。

我们使用的是静态 ImageLayer,其中投影是我们在地图上使用的自定义坐标系。

有没有办法解决这个问题?那么 minZoom 和 maxZoom 是相对于浏览器分辨率的?

【问题讨论】:

    标签: openlayers


    【解决方案1】:

    如 OpenLayers 网站所述:

    zoom 选项是指定地图分辨率的便捷方式。可用缩放级别由maxZoom(默认值:28)、zoomFactor(默认值:2)和max resolution(默认值以投影的有效范围适合 256x256 像素图块的方式计算)确定。从分辨率为 maxResolution 单位/像素的缩放级别 0 开始,后续缩放级别的计算方法是将前一个缩放级别的分辨率除以 zoomFactor,直到达到缩放级别 maxZoom

    因此,您可以使用view.getResolutionForZoom(zoom) 找到最小和最大分辨率或任何缩放分辨率,同时缩放介于 0-28 之间。您只需要调整图层的缩放级别并在加载图层时计算分辨率并设置它们的属性。

    但这可能不像你说的那样准确。还有另一种方法,首先,获取图层的范围并使您的地图适合图层。有一种方法view.fit(geometryOrExtent, opt_options)你可以找到更多信息here。然后为地图的maxResolution设置当前分辨率。
    在此之后,您可以确保整个图层都可见。

    为了更好的地图装箱,您可以将图层范围的缩放数量减少一到二。它使图层更适合地图。

    【讨论】:

    • 很好,我实际上错过了视图模块上的那个功能。这绝对可以计算相对缩放。前几天我也尝试了 fit 函数,但由于某种原因,它弄乱了我们的集群矢量图层,但无论如何我们都要删除它,我认为这将是最好的解决方案。调用 rendercomplete 后的 view.fit()。感谢您的洞察力。
    猜你喜欢
    • 2011-05-13
    • 2015-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多