1

我有使用https://www.npmjs.com/package/angular-split的角度应用程序。1 个分割区域有开放的图层地图。如果只有地图分割区域可见,方法如下:

private zoomToExtent(extent: IExtent, view: ol.View) {
  const mapSize = this.map.getSize();
  this.map.getView().fit(extent, { size: mapSize });
}

工作得很好。但是,当窗口打开多个拆分时,它不起作用,因为即使地图更小,mapSize 仍然相同。

地图工作正常,因为右下角的地图按钮和比例线适应打开其他分割区域。

那么这应该如何完成,即如何获得真实的地图大小?

4

1 回答 1

1

也许calculateExtent很适合:

计算当前视图状态的范围和传递的大小。大小是计算范围应适合的框的像素尺寸。在大多数情况下,您希望获得整个地图的范围,即map.getSize().

因此类似于:

const currentExtent = this.map.getView().calculateExtent(this.map.getSize());

编辑: @Mike 的好点子:

updateSize可能会更好:

强制重新计算地图视口大小。当第三方代码更改地图视口的大小时,应该调用它。

private zoomToExtent(extent: IExtent, view: ol.View) { // Parameter view unnecessary (?)
  this.map.updateSize();
  this.map.getView().fit(extent, { size: this.map.getSize() });
}
于 2020-02-26T12:41:08.053 回答