OpenLayers 3中是否有一个"getZoomForResolution"? [英] Is there a 'getZoomForResolution' in OpenLayers 3?

查看:204
本文介绍了OpenLayers 3中是否有一个"getZoomForResolution"?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

OpenLayers 2 used to have a getZoomForResolution method that would give you the zoom level (or closest zoom level) of a given resolution.

对于ol.View对象,我在ol3中没有看到任何这样的方法.有没有一种方法可以利用ol.view当前拥有的东西来实现?

I don't see any such method in ol3, for the ol.View object that is. Is there a way to achieve this with what ol.view currently have ?

推荐答案

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

This will give the next closest integer zoom for a give resolution:

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()为浏览器完善对数解决方案

refining the logarithmic solution for browsers with Math.log2()

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

,对于没有log2()的IE

and for IE which does not have log2()

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

这篇关于OpenLayers 3中是否有一个"getZoomForResolution"?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆