Openlayers 为什么缩放级别返回十进制?
我在我的项目中使用openlayers 6。 地图上的图层根据缩放级别隐藏/显示 以下是地图和视图防御:Openlayers 为什么缩放级别返回十进制?,openlayers,Openlayers,我在我的项目中使用openlayers 6。 地图上的图层根据缩放级别隐藏/显示 以下是地图和视图防御: view=新视图({ 中心:地图中心, 投影:israeliTM.getCode(), 缩放:0, 分辨率:分辨率//分辨率数组 }); 地图=新地图({ 层:层, 目标:“地图”, 视图:视图 }); 更改缩放时激发此行: var curRes=map.getView().getResolution()[map.getView().getZoom()]; 正如您在视图中所看到的,定义为
view=新视图({
中心:地图中心,
投影:israeliTM.getCode(),
缩放:0,
分辨率:分辨率//分辨率数组
});
地图=新地图({
层:层,
目标:“地图”,
视图:视图
});
更改缩放时激发此行:
var curRes=map.getView().getResolution()[map.getView().getZoom()];
正如您在视图中所看到的,定义为数组的防御分辨率以及更改缩放时的分辨率
我希望从这个map.getView().getZoom()
整数中获取索引
分辨率数组并返回当前分辨率。通常情况下,它会按预期工作,但有时
map.getView().getZoom()
返回十进制数,如3.56989
知道为什么
map.getView().getZoom()
会返回一些时间小数吗 这是预期的行为,它实际上返回一个Number()
此更改似乎出现在gl版本中,因为您现在没有定义缩放级别
值得注意的是,每当使用地图缩放控件(+-)UI按钮时,该值似乎总是增加/减少到下一个整数(例如,3.462将变为3.0或4.0),但当发生收缩缩放事件时,该值通常包含小数部分
如果希望它是基于整数的步骤,请检查:
具体而言:
这是预期的行为,它实际上返回一个
Number()
此更改似乎出现在gl版本中,因为您现在没有定义缩放级别
值得注意的是,每当使用地图缩放控件(+-)UI按钮时,该值似乎总是增加/减少到下一个整数(例如,3.462将变为3.0或4.0),但当发生收缩缩放事件时,该值通常包含小数部分
如果希望它是基于整数的步骤,请检查:
具体而言:
如果您使用的是OpenLayers 6,请在视图选项中指定
constraintResolution
view = new View({
center: mapCenter,
projection: israeliTM.getCode(),
zoom: 0,
constrainResolution: true,
resolutions: resolutions // resolutions array
});
对于OpenLayers 5,在交互选项中指定constraintResolution
map = new Map({
layers: layers,
target: 'map',
interactions: defaultInteractions({
constrainResolution: true
}),
view: view
});
如果您使用的是OpenLayers 6,请在视图选项中指定
约束分辨率
view = new View({
center: mapCenter,
projection: israeliTM.getCode(),
zoom: 0,
constrainResolution: true,
resolutions: resolutions // resolutions array
});
对于OpenLayers 5,在交互选项中指定constraintResolution
map = new Map({
layers: layers,
target: 'map',
interactions: defaultInteractions({
constrainResolution: true
}),
view: view
});
迈克·萨克斯为《邮报》撰稿。我可以像在ol2中一样使用instaed of rsolutions数组(分辨率:分辨率)缩放数组吗?您可以使用分辨率数组来定义缩放级别(如果缩放级别的间距不规则,这是唯一的方法),但是视图不会约束为整数值,除非您还指定Constraint Resolution。我仍然会得到相同的行为,添加Constraint Resolution后,我得到了zoom 1.99998:trueZooming默认设置为动画,因此在执行此操作时,您将看到非整数值。为了避免这种情况,您可以尝试在互动选项中使用Mike thaks for post的
zoomDuration:0
。我可以像在ol2中一样使用instaed of rsolutions数组(分辨率:分辨率)缩放数组吗?您可以使用分辨率数组来定义缩放级别(如果缩放级别的间距不规则,这是唯一的方法),但是视图不会约束为整数值,除非您还指定Constraint Resolution。我仍然会得到相同的行为,添加Constraint Resolution后,我得到了zoom 1.99998:trueZooming默认设置为动画,因此在执行此操作时,您将看到非整数值。为了避免这种情况,您可以尝试在交互选项中使用zoomDuration:0