使用 openlayer3 初始化地图后如何在视图中设置范围属性?

Anu*_*eep 3 javascript maps openlayers openlayers-3

我的目的是当我们拖动地图时将地图平移到一定的限制(就像谷歌地图一样),然后它应该锁定。Openlayer 2.0 版中使用 Bounds 提供了这种支持。但在版本 3 中,我必须在初始化视图时设置范围属性。我就卡在这个阶段了。初始化地图后未设置视图。

  var map = new ol.Map({
    target: 'map',
    layers: [
      new ol.layer.Tile({
        source: new ol.source.OSM()
      })
    ],
    view: new ol.View({
      center: ol.proj.fromLonLat([73.8, 18.5]),
      zoom: 12
    })
  });
Run Code Online (Sandbox Code Playgroud)

现在我想在视图中设置“范围”属性

  map.setView(new ol.View({
    center: ol.proj.fromLonLat([73.8, 18.5]),
    extent: map.getView().calculateExtent(map.getSize()),
    zoom : 12
  }));
Run Code Online (Sandbox Code Playgroud)

该代码不起作用。还有其他方法可以做到这一点还是我做错了什么?控制台没有错误。但地图不显示。

pav*_*los 7

代替map.setView(new ol.View({...........

在map init之后使用这段代码

.....
var myExtent = [xmin,ymin,xmax,ymax];
map.getView().fit(myExtent , map.getSize());
........
Run Code Online (Sandbox Code Playgroud)

更新 要防止将地图拖动到当前范围之外,请执行以下操作:

map.setView(
new ol.View({
    center: ol.proj.fromLonLat([73.8, 18.5]),
    extent: map.getView().calculateExtent(map.getSize()),   
    zoom: 12
  })
);
Run Code Online (Sandbox Code Playgroud)

这是一个小提琴