Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Openlayers 为什么缩放级别返回十进制?_Openlayers - Fatal编程技术网

Openlayers 为什么缩放级别返回十进制?

Openlayers 为什么缩放级别返回十进制?,openlayers,Openlayers,我在我的项目中使用openlayers 6。 地图上的图层根据缩放级别隐藏/显示 以下是地图和视图防御: view=新视图({ 中心:地图中心, 投影:israeliTM.getCode(), 缩放:0, 分辨率:分辨率//分辨率数组 }); 地图=新地图({ 层:层, 目标:“地图”, 视图:视图 }); 更改缩放时激发此行: var curRes=map.getView().getResolution()[map.getView().getZoom()]; 正如您在视图中所看到的,定义为

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

以下是地图和视图防御:

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