diff --git a/projects/common-map/src/fm-map/components/map/map.component.ts b/projects/common-map/src/fm-map/components/map/map.component.ts index 6967667..714023b 100644 --- a/projects/common-map/src/fm-map/components/map/map.component.ts +++ b/projects/common-map/src/fm-map/components/map/map.component.ts @@ -1,4 +1,4 @@ -import { Component, OnInit, OnDestroy, HostListener, Inject, ViewChild, AfterViewInit,ChangeDetectorRef } from '@angular/core'; +import { Component, OnInit, OnDestroy, HostListener, Inject, ViewChild, AfterViewInit,ChangeDetectorRef,NgZone } from '@angular/core'; import { Location } from '@angular/common'; import { Observable, Subject, Subscription,combineLatest, from } from 'rxjs'; import { debounce, withLatestFrom, first, combineAll } from 'rxjs/operators'; @@ -81,7 +81,8 @@ export class MapComponent implements OnInit, OnDestroy,AfterViewInit { private serializeService: StateSerializerService, public itemTypeService: ItemTypeService, private location: Location, - private geolocationService: GeolocationService) { + private geolocationService: GeolocationService, + private zone: NgZone) { } @HostListener('document:keyup', ['$event']) @@ -248,26 +249,30 @@ export class MapComponent implements OnInit, OnDestroy,AfterViewInit { } handleOnMoveEnd(event) { - var map = event.map; - var view = map.getView(); - var rotation = view.getRotation(); - var zoom = view.getZoom(); - var center = transform(view.getCenter(), view.getProjection(), "EPSG:4326"); - var extent = view.calculateExtent(this.map.instance.getSize()); - let mapState: IMapState = { xCenter: center[0], yCenter: center[1], zoom: zoom, rotation: rotation, baseLayerCode: null }; - let state = { mapState: mapState, extent: extent }; - let source = from([state]); - source.pipe(withLatestFrom(this.selectedBaseLayer$), withLatestFrom(this.queryState$)).subscribe(([[state, baselayer], queryState]) => { - if (mapState && baselayer && queryState) { - let newMapState = tassign(state.mapState, { baseLayerCode: baselayer.item.code }); - this.replaceUrl(newMapState, tassign(queryState, { bbox: queryState.bboxFilter ? state.extent : queryState.bbox })); - this.store.dispatch(new mapActions.SetViewExtent(state.extent)); - } - }); + this.zone.run(() =>{ + var map = event.map; + var view = map.getView(); + var rotation = view.getRotation(); + var zoom = view.getZoom(); + var center = transform(view.getCenter(), view.getProjection(), "EPSG:4326"); + var extent = view.calculateExtent(this.map.instance.getSize()); + let mapState: IMapState = { xCenter: center[0], yCenter: center[1], zoom: zoom, rotation: rotation, baseLayerCode: null }; + let state = { mapState: mapState, extent: extent }; + let source = from([state]); + source.pipe(withLatestFrom(this.selectedBaseLayer$), withLatestFrom(this.queryState$)).subscribe(([[state, baselayer], queryState]) => { + if (mapState && baselayer && queryState) { + let newMapState = tassign(state.mapState, { baseLayerCode: baselayer.item.code }); + this.replaceUrl(newMapState, tassign(queryState, { bbox: queryState.bboxFilter ? state.extent : queryState.bbox })); + this.store.dispatch(new mapActions.SetViewExtent(state.extent)); + } + }); + }); } handleOnMouseDown(event: MouseEvent) { - this.store.dispatch(new mapActions.CollapseSearch()); + this.zone.run(() =>{ + this.store.dispatch(new mapActions.CollapseSearch()); + }); } handleOnDownload(event) {