OpenLayers 3 中有 'getZoomForResolution' 吗?
Is there a 'getZoomForResolution' in OpenLayers 3?
OpenLayers 2 曾经有一个 getZoomForResolution
方法可以为您提供给定分辨率的缩放级别(或最接近的缩放级别)。
对于 ol.View
对象,我在 ol3 中没有看到任何这样的方法。 ol.view
目前有什么方法可以做到这一点?
这将为给定分辨率提供下一个最接近的整数缩放:
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;
OpenLayers 2 曾经有一个 getZoomForResolution
方法可以为您提供给定分辨率的缩放级别(或最接近的缩放级别)。
对于 ol.View
对象,我在 ol3 中没有看到任何这样的方法。 ol.view
目前有什么方法可以做到这一点?
这将为给定分辨率提供下一个最接近的整数缩放:
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;