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

View File

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

View File

@ -40,7 +40,10 @@ export class DeviceOrientationService {
getCurrentCompassHeading(): Observable<number> { getCurrentCompassHeading(): Observable<number> {
return Observable.create((observer: Observer<number>) => { return Observable.create((observer: Observer<number>) => {
window.addEventListener("deviceorientation", (event:DeviceOrientationEvent)=>{ 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) => { (error: PositionError) => {
console.debug('Geolocation service: ' + error.message); console.debug('Geolocation service: ' + error.message);
observer.error(error); //observer.error(error);
}, },
{ {
enableHighAccuracy: true, enableHighAccuracy: true,