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

时间:2016-10-18 11:33:48

标签: javascript maps openlayers openlayers-3

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

  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
    })
  });

现在我想在视图中设置'extent'属性

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

此代码无效。有没有其他方法可以做到这一点,还是我做错了什么? 控制台中没有错误。但地图不显示。

1 个答案:

答案 0 :(得分:2)

而不是map.setView(new ol.View({...........

在map init

之后使用这段代码
.....
var myExtent = [xmin,ymin,xmax,ymax];
map.getView().fit(myExtent , map.getSize());
........

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

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

这是一个Koloboke