Как подогнать карту openlayers, когда карта не полноразмерная?


person char m    schedule 26.02.2020    source источник
comment
попробуйте добавить this.map.updateSize() перед вызовом .getSize()   -  person Mike    schedule 26.02.2020
comment
Это определенно сработало! Большое спасибо!   -  person char m    schedule 26.02.2020


Ответы (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() });
}
person pzaenger    schedule 26.02.2020
comment
Спасибо! Параметр присутствует, потому что в реальном методе он используется. В реальном коде я буду вызывать updateSize при изменении видимости / размера разделенных областей. - person char m; 26.02.2020