Merge pull request #5876 from vvlladd28/improvement/map/image-map-resize

[3.3.3] UI: Improvement image map resize - correct calculate center position
This commit is contained in:
Igor Kulikov 2022-01-14 13:03:10 +02:00 committed by GitHub
commit ba0d42d538
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 6 additions and 8 deletions

View File

@ -300,8 +300,8 @@ export class MapWidgetController implements MapWidgetInterface {
}
resize() {
this.map?.invalidateSize();
this.map.onResize();
this.map.onResize();
this.map?.invalidateSize();
}
destroy() {

View File

@ -159,27 +159,25 @@ export class ImageMap extends LeafletMap {
lastCenterPos.x *= w;
lastCenterPos.y *= h;
const center = this.pointToLatLng(lastCenterPos.x, lastCenterPos.y);
setTimeout(() => {
this.map.panTo(center, { animate: false });
}, 0);
this.map.panTo(center, { animate: false });
}
}
onResize(updateImage?: boolean) {
let width = this.$container.clientWidth;
if (width > 0 && this.aspect) {
let height = width / this.aspect;
let height = Math.round(width / this.aspect);
const imageMapHeight = this.$container.clientHeight;
if (imageMapHeight > 0 && height > imageMapHeight) {
height = imageMapHeight;
width = height * this.aspect;
width = Math.round(height * this.aspect);
}
width *= maxZoom;
const prevWidth = this.width;
const prevHeight = this.height;
if (this.width !== width || updateImage) {
this.width = width;
this.height = width / this.aspect;
this.height = Math.round(width / this.aspect);
if (!this.map) {
this.initMap(updateImage);
} else {