当地图不是全尺寸时,如何适应openlayers地图?

当地图不是全尺寸时,如何适应openlayers地图?,openlayers,angular-openlayers,Openlayers,Angular Openlayers,我有一个角度的应用程序,使用。1分割区域具有开放的图层地图。如果只有地图分割区域可见,请使用以下方法: private zoomToExtent(extent: IExtent, view: ol.View) { const mapSize = this.map.getSize(); this.map.getView().fit(extent, { size: mapSize }); } 很好用。但是,当窗口打开多个拆分时,它不起作用,因为即使贴图较小,mapSize仍然相同 由于右下

我有一个角度的应用程序,使用。1分割区域具有开放的图层地图。如果只有地图分割区域可见,请使用以下方法:

private zoomToExtent(extent: IExtent, view: ol.View) {
  const mapSize = this.map.getSize();
  this.map.getView().fit(extent, { size: mapSize });
}
很好用。但是,当窗口打开多个拆分时,它不起作用,因为即使贴图较小,mapSize仍然相同

由于右下角的地图按钮和比例线适用于打开其他分割区域,因此地图正常工作

因此,应该如何做到这一点,即如何获得真实的地图大小?

可能很适合:

计算当前视图状态的范围和传递的大小。 “大小”是将计算结果放入其中的框的像素尺寸 范围应该合适。在大多数情况下,您希望了解 整个映射,即
map.getSize()

因此类似于:

const currentExtent = this.map.getView().calculateExtent(this.map.getSize());
编辑:来自@Mike:

可能更好:

强制重新计算贴图视口大小。这应该被称为 当第三方代码更改地图视口的大小时


在调用
.getSize()
之前,尝试添加
this.map.updateSize()
,这确实有效!谢谢!谢谢参数存在是因为在实际方法中使用了它。在实际代码中,每当分割区域的可见性/大小发生变化时,我都会调用updateSize。
private zoomToExtent(extent: IExtent, view: ol.View) { // Parameter view unnecessary (?)
  this.map.updateSize();
  this.map.getView().fit(extent, { size: this.map.getSize() });
}