当地图不是全尺寸时,如何适应openlayers地图?
我有一个角度的应用程序,使用。1分割区域具有开放的图层地图。如果只有地图分割区域可见,请使用以下方法:当地图不是全尺寸时,如何适应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仍然相同 由于右下
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() });
}