Dictionary Openlayers 3:更改地图范围的问题

Dictionary Openlayers 3:更改地图范围的问题,dictionary,openlayers-3,geoserver,Dictionary,Openlayers 3,Geoserver,我在openlayers 3代码中更改地图范围时遇到了一个问题。 我使用EPSG:4326作为投影格式,我打算更改边界 到我的“界限”变量。我正在使用 map.getView().fitExtent(bounds, map.getSize()); 用于更改地图的范围。问题是,首先我要提供边界 值为[76.9501571655273,76.9501571655273,78.5841217041016,78.5841217041016],将地图范围拟合到此值后,当我使用 map.getView()

我在openlayers 3代码中更改地图范围时遇到了一个问题。 我使用EPSG:4326作为投影格式,我打算更改边界 到我的“界限”变量。我正在使用

map.getView().fitExtent(bounds, map.getSize());
用于更改地图的范围。问题是,首先我要提供边界 值为[76.9501571655273,76.9501571655273,78.5841217041016,78.5841217041016],将地图范围拟合到此值后,当我使用

map.getView().calculateExtent(map.getSize());
我得到[76.39384841918945,76.39384841918945,79.14043045043945,79.14043045043945]作为输出。我有一种感觉,这可能是一个投影问题,但我不知道我哪里做错了。有人能告诉我我做错了什么吗

以下是完整的代码(我删除了不必要的代码,使其更具可读性):


OpenLayers地图预览
var格式='image/png';
变量界限=[76.9501571655273,76.9501571655273,,
78.5841217041016, 78.5841217041016];
var untiled=新ol.layer.Image({
来源:新ol.source.ImageWMS({
比率:1,
网址:'http://localhost:9000/geoserver/TargetWorkspace/wms',
参数:{'FORMAT':格式,
“版本”:“1.1.1”,
图层:“TargetWorkspace:hyderbadtargets”,
样式:“”,
}
})
});
var projection1=新的ol.proj.Projection({
代码:“EPSG:4326”,
单位:'度',
axisOrientation:'neu'
});
var map=新ol.map({
控件:ol.control.defaults({
归因:假
}),
目标:“地图”,
图层:[
解开
],
视图:新ol.view({
投影:投影1,
中间:[77.7671394348,77.7671394348],
缩放:0
})
});
var ext=map.getView().calculateExtent(map.getSize());
log(“映射绑定在“+ext[0]+”+ext[1]+”+ext[2]+“+ext[3]+”)之前);
map.getView().fitExtent(bounds,map.getSize());
var ext2=map.getView().calculateExtent(map.getSize());
log(“映射绑定在“+ext2[0]+”+ext2[1]+”+ext2[2]+”+ext2[3]+”)之后);
谢谢,


Sourabh

如果调用的是
fittentext
OpenLayers,则会调整视图边界,以使给定的范围可见。如果范围的尺寸与地图大小的尺寸不匹配,则实际视图范围可能会更大。

WMS提供具有预定义比例/分辨率的图像,例如zoom 8可以具有分辨率1222.992452和比例1:3000000。如何使离散缩放值适应您提供的边界?OL3为您找到最佳缩放级别,其边界坐标接近您想要的边界

此外,我注意到在您的代码中,您使用:
newol.proj.projection({……

但是,OL3本身已经在库中包含此投影。最好使用:
newol.proj.get('EPSG:4326'));

如favero在回答中所述,默认情况下它只使用diescrete缩放值,但是可以通过设置选项
Constraint Resolution
false来避免这种情况。然后,缩放级别允许为浮点数

还要注意的是,
fitdext
现在被称为
fit

map.getView().fit(bounds, { constrainResolution: false })

是的!我正在将范围更改为一些随机值。一旦我选择了与当前缩放级别相对应的范围,我就能够完美地更改范围。感谢您的帮助。非常感谢:)
map.getView().fit(bounds, { constrainResolution: false })