为什么缩放级别返回小数?

我在项目中使用openlayers 6。 地图上的图层根据缩放级别隐藏/显示。

这是地图和视图的定义:

view = new View({
    center: mapCenter,projection: israeliTM.getcode(),zoom: 0,resolutions: resolutions // resolutions array 
});

map = new Map({
    layers: layers,target: 'map',view: view
});

更改缩放后会触发此行:

var curRes = map.getView().getResolution()[map.getView().getzoom()];

正如您在视图上看到的,定义为数组和缩放比例更改时的防御分辨率 我希望从这个map.getView().getzoom()整数中获取索引 resolutions数组并返回当前分辨率。一般来说,它可以按预期工作,但有时 map.getView().getzoom()返回十进制数字,例如3.56989。

有人知道为什么map.getView().getzoom()返回某个时间十进制吗?

qianqianyouer 回答:为什么缩放级别返回小数?

如果您使用的是OpenLayers 6,请在视图选项中指定constrainResolution

view = new View({
    center: mapCenter,projection: israeliTM.getCode(),zoom: 0,constrainResolution: true,resolutions: resolutions // resolutions array 
});

,对于OpenLayers 5,在交互选项中指定constrainResolution

map = new Map({
    layers: layers,target: 'map',interactions: defaultInteractions({
        constrainResolution: true
    }),view: view
});
,

这是预期的行为,它实际上会返回Number() https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number

gl版本似乎已出现此更改,因为您现在尚未定义缩放级别。

值得注意的是,每当使用地图缩放控件(+-)UI按钮时,该值似乎总是增加/减少到下一个整数整数(例如3.462将变为3.0或4.0),但是当捏-发生缩放事件,这些值通常包含小数部分。

如果您希望它以整数为基础,那么请查看:

https://github.com/mapbox/mapbox-gl-js/pull/7863

具体是:

https://github.com/mapbox/mapbox-gl-js/pull/7863/commits/19b164205208e99bbbd62750cfb7e845819ab8e4

本文链接:https://www.f2er.com/3051080.html

大家都在问