OpenLayers 3中是否有一个“ getZoomForResolution”?

Ale*_*ubé 1 openlayers-3

OpenLayers 2曾经有一种getZoomForResolution方法可以为您提供给定分辨率的缩放级别(或最接近的缩放级别)。

对于该ol.View对象,我在ol3中看不到任何此类方法。ol.view目前有什么方法可以实现?

Ric*_*ood 5

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

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
Run Code Online (Sandbox Code Playgroud)

我哥哥建议:

var zoom = Math.ceil( (Math.log(resolution) - Math.log(156543.03390625) ) / Math.log(0.5))
Run Code Online (Sandbox Code Playgroud)

使用Math.log2()完善浏览器的对数解决方案

var zoom = Math.log2(156543.03390625) - Math.log2(resolution);
Run Code Online (Sandbox Code Playgroud)

对于没有log2()的IE

var zoom = Math.log(156543.03390625) * Math.LOG2E  - Math.log(resolution) * Math.LOG2E;
Run Code Online (Sandbox Code Playgroud)