【问题标题】:change openlayers3 zoom sensitivity更改 openlayers3 缩放灵敏度
【发布时间】:2016-12-21 20:35:32
【问题描述】:

我目前正在使用带有 4 个缩放级别的平铺地图 (ol.layer.Tile) 的 OL3。我希望缩放更敏感,并允许 8 个缩放级别而不是 4 个,每个平铺级别每个 2 个。有什么想法吗?

【问题讨论】:

    标签: openlayers-3


    【解决方案1】:

    根据docs,您可以使用 View 对象中的多个属性来管理缩放设置:

    • ma​​xResolution:用于确定分辨率约束的最大分辨率。它与 minResolution 一起使用(或 最大缩放)和缩放因子。如果未指定,则以这种方式计算 投影的有效性范围适合 256x256 像素的图块。如果 投影是球形墨卡托(默认),然后是 maxResolution 默认为 40075016.68557849 / 256 = 156543.03392804097。
    • minResolution:用于确定分辨率约束的最小分辨率。它与 maxResolution 一起使用(或 minZoom) 和 zoomFactor。如果未指定,则假设为 29 缩放级别(系数为 2)。如果投影是球形的 墨卡托(默认)然后 minResolution 默认为 40075016.68557849 / 256 / Math.pow(2, 28) = 0.0005831682455839253。
    • ma​​xZoom:用于确定分辨率限制的最大缩放级别。它与 minZoom 一起使用(或 最大分辨率)和缩放因子。默认值为 28。请注意,如果 还提供了 minResolution,它优先于 maxZoom。
    • minZoom:用于确定分辨率约束的最小缩放级别。它与 maxZoom (或 minResolution) 和 缩放因子。默认值为 0。请注意,如果还提供了 maxResolution, 它优先于 minZoom。
    • zoomFactor:用于确定分辨率约束的缩放系数。默认为 2。

    为 XYZ 源的每个平铺网格缩放级别获取 2 个视图缩放级别的示例:

    var source = new ol.source.XYZ({
      // your source configuration here
    });
    var resolutions = source.getTileGrid().getResolutions();
    var map = new ol.Map({
      layers: [
        new ol.layer.Tile({
          source: source
        })
      ],
      target: 'map',
      view: new ol.View({
        center: [0, 0],
        zoom: 0,
        maxResolution: resolutions[0],
        minResolution: resolutions[resolutions.length-1],
        zoomFactor: 1.5
      })
    });
    

    【讨论】:

    • 我正在使用 ol.source.xyz
    • 使用 ol.source.xyz 你仍然需要设置一个 ol.View 对象。我相信修改该对象可以更改地图缩放级别。
    • @tfidelis 是对的。我编辑了答案中的示例以更好地解决问题。
    • @amitdar 如果解决了您的问题,请接受答案。
    猜你喜欢
    • 1970-01-01
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-14
    相关资源
    最近更新 更多