【问题标题】:How to set extent property in view after map initialize using openlayer3?使用openlayer3初始化地图后如何在视图中设置范围属性?
【发布时间】:2016-10-18 11:33:47
【问题描述】:

我的目的是在我们拖动地图时将地图平移到某个限制(就像谷歌地图一样),然后它应该锁定。使用 Bounds 的 Openlayer 版本 2.0 中存在这种支持。但在版本 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
    })
  });

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

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

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

【问题讨论】:

标签: javascript maps openlayers openlayers-3


【解决方案1】:

而不是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
  })
);

这是fiddle

【讨论】:

  • 感谢帕夫洛斯的回复。是的,那很好。其实我是从“map.getView().calculateExtent(map.getSize())”得到这些值(xmin,ymin,xmaz,ymax),你的代码是绝对正确的,但我的目的没有解决,那张地图区域应在特定区域后锁定。如果我直接在地图的“范围”属性视图初始化程序上硬编码该值,它就可以工作。但这不可行。
  • 你想做什么????锁是什么意思?防止移动到范围之外。请详细解释或更好地制作小提琴来证明您的问题。
  • 是的。防止移动到范围之外。
  • 有一个适合范围的解决方案更新,将您的范围转换为 3857 srs 作为 openlayers 使用。谢谢
猜你喜欢
  • 1970-01-01
  • 2015-03-16
  • 1970-01-01
  • 2019-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-11
  • 1970-01-01
相关资源
最近更新 更多