OpenLayers 3 中有“getZoomForResolution”吗?

问题描述 投票:0回答:2

OpenLayers 2 曾经有一个

getZoomForResolution
方法,可以为您提供给定分辨率的缩放级别(或最接近的缩放级别)。

对于

ol.View
对象,我在 ol3 中没有看到任何此类方法。有没有办法用
ol.view
目前拥有的东西来实现这一点?

openlayers-3
2个回答
8
投票

这将为给定分辨率提供下一个最接近的整数缩放:

function zoomForResolution(resolution) {
    var zoom = 0;
    var r = 156543.03390625; // resolution for zoom 0
    while (resolution < r) {
        r /= 2;
        zoom++;
        if (resolution > r) {
            return zoom;
        }
    }
    return zoom; // resolution was greater than 156543.03390625 so return 0
}

zoomForResolution(40); // 12

我哥哥建议:

var zoom = Math.ceil( (Math.log(resolution) - Math.log(156543.03390625) ) / Math.log(0.5))

使用 Math.log2() 改进浏览器的对数解

var zoom = Math.log2(156543.03390625) - Math.log2(resolution);

对于没有 log2() 的 IE

var zoom = Math.log(156543.03390625) * Math.LOG2E  - Math.log(resolution) * Math.LOG2E;

0
投票

在较新版本的 OpenLayers 中,现在有一个

getZoomForResolution
函数:https://openlayers.org/en/v7.5.2/apidoc/module-ol_View-View.html#getZoomForResolution

© www.soinside.com 2019 - 2024. All rights reserved.