Fix several issues, attemt to fix zooming issue
All checks were successful
FarmMaps.Develop/FarmMapsLib/develop This commit looks good

This commit is contained in:
Willem Dantuma 2020-02-21 00:11:18 +01:00
parent abfef73cd1
commit 3a38c24360
5 changed files with 68 additions and 58 deletions

View File

@ -91,7 +91,6 @@ export class MapComponent implements OnInit, OnDestroy,AfterViewInit {
private geolocationService: GeolocationService,
private zone: NgZone,
private deviceorientationService:DeviceOrientationService) {
this.initCustomStyles();
}
@HostListener('document:keyup', ['$event'])
@ -154,6 +153,7 @@ export class MapComponent implements OnInit, OnDestroy,AfterViewInit {
}
ngAfterViewInit() {
this.initCustomStyles();
this.paramSub = this.route.paramMap.pipe(withLatestFrom(this.setStateCount$),withLatestFrom(this.queryState$),withLatestFrom(this.mapState$)).subscribe( (state) => {
let params: ParamMap = state[0][0][0];
let setStateCount:number = state[0][0][1];
@ -170,7 +170,7 @@ export class MapComponent implements OnInit, OnDestroy,AfterViewInit {
let rotation = parseFloat(params.get("rotation"));
let baseLayer = params.get("baseLayer")?params.get("baseLayer"):"";
newMapState = { xCenter: xCenter, yCenter: yCenter, zoom: zoom, rotation: rotation, baseLayerCode: baseLayer }
mapStateChanged = JSON.stringify(lastMapState) != JSON.stringify(newMapState);
mapStateChanged = (JSON.stringify(lastMapState) != JSON.stringify(newMapState)) && setStateCount == 0 ;
window.localStorage.setItem("FarmMapsCommonMap_mapState",JSON.stringify(newMapState));
}
if (params.has("queryState")) {
@ -182,8 +182,12 @@ export class MapComponent implements OnInit, OnDestroy,AfterViewInit {
}
queryStateChanged = this.serializeService.serialize(lastQueryState) != queryState;
}
setTimeout(() => {
this.zone.run(()=> {
if ( queryStateChanged) {
if ( queryStateChanged && mapStateChanged) {
console.debug("Both states");
this.store.dispatch(new mapActions.SetState(newMapState,newQueryState));
} else if(queryStateChanged) {
console.debug("Query state");
this.store.dispatch(new mapActions.SetQueryState(newQueryState));
} else if (mapStateChanged) {
@ -191,11 +195,12 @@ export class MapComponent implements OnInit, OnDestroy,AfterViewInit {
this.store.dispatch(new mapActions.SetMapState(newMapState));
}
})
},0);
});
setTimeout(() => {
this.map.instance.updateSize();
}, 500);
console.debug("Afterviewinit");
}
handleSearchCollapse(event) {

View File

@ -128,7 +128,8 @@ export function reducer(state = initialState, action: mapActions.Actions | commo
case mapActions.STARTSEARCHSUCCESS: {
let a = action as mapActions.StartSearchSuccess;
let extent = state.extent;
if (action.query.bboxFilter) {
if (!action.query.bboxFilter) {
console.debug("Set extent");
extent = createEmpty();
if (extent) {
for (let f of action.features) {
@ -222,6 +223,7 @@ export function reducer(state = initialState, action: mapActions.Actions | commo
return tassign(state, { searchCollapsed: state.panelVisible ? false: true});
}
case mapActions.SETEXTENT: {
console.debug("Set extent 2");
let a = action as mapActions.SetExtent;
return tassign(state, { extent: a.extent });
}

View File

@ -40,7 +40,10 @@ export class DeviceOrientationService {
getCurrentCompassHeading(): Observable<number> {
return Observable.create((observer: Observer<number>) => {
window.addEventListener("deviceorientation", (event:DeviceOrientationEvent)=>{
observer.next(this.compassHeading(event.alpha,event.beta,event.gamma));
let heading = this.compassHeading(event.alpha,event.beta,event.gamma);
if(!Number.isNaN(heading)) {
observer.next(heading);
}
} );
});
}

View File

@ -25,7 +25,7 @@ export class GeolocationService {
},
(error: PositionError) => {
console.debug('Geolocation service: ' + error.message);
observer.error(error);
//observer.error(error);
},
{
enableHighAccuracy: true,