From 8bfd7b25bf042ed24f97741329a4b67387eec43f Mon Sep 17 00:00:00 2001
From: aymeric-duchein <32835655+aymeric-duchein@users.noreply.github.com>
Date: Tue, 2 Oct 2018 20:28:14 +0200
Subject: [PATCH 1/3] fix(source): check host instance before setSource (#197)
From ba78923d897c0e4a51b3c86b3db5926b61dc06a1 Mon Sep 17 00:00:00 2001
From: samuel-girard <32910196+samuel-girard@users.noreply.github.com>
Date: Tue, 9 Oct 2018 08:56:45 +0200
Subject: [PATCH 2/3] feat(source): update params when input changes (TileWMS
and ImageWMS) (#199)
---
.../src/lib/sources/imagewms.component.ts | 10 ++++++++--
.../src/lib/sources/tilewms.component.ts | 10 ++++++++--
2 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/projects/ngx-openlayers/src/lib/sources/imagewms.component.ts b/projects/ngx-openlayers/src/lib/sources/imagewms.component.ts
index 3688e986..6b8e2aa8 100644
--- a/projects/ngx-openlayers/src/lib/sources/imagewms.component.ts
+++ b/projects/ngx-openlayers/src/lib/sources/imagewms.component.ts
@@ -1,4 +1,4 @@
-import { Component, Host, Input, OnInit, forwardRef } from '@angular/core';
+import { Component, Host, Input, OnChanges, OnInit, forwardRef, SimpleChanges } from '@angular/core';
import { AttributionLike, ImageLoadFunctionType, ProjectionLike, source } from 'openlayers';
import { LayerImageComponent } from '../layers/layerimage.component';
import { SourceComponent } from './source.component';
@@ -8,7 +8,7 @@ import { SourceComponent } from './source.component';
template: ``,
providers: [{ provide: SourceComponent, useExisting: forwardRef(() => SourceImageWMSComponent) }],
})
-export class SourceImageWMSComponent extends SourceComponent implements OnInit {
+export class SourceImageWMSComponent extends SourceComponent implements OnChanges, OnInit {
instance: source.ImageWMS;
@Input()
@@ -42,4 +42,10 @@ export class SourceImageWMSComponent extends SourceComponent implements OnInit {
this.instance = new source.ImageWMS(this);
this.host.instance.setSource(this.instance);
}
+
+ ngOnChanges(changes: SimpleChanges) {
+ if (this.instance && changes.hasOwnProperty('params')) {
+ this.instance.updateParams(this.params);
+ }
+ }
}
diff --git a/projects/ngx-openlayers/src/lib/sources/tilewms.component.ts b/projects/ngx-openlayers/src/lib/sources/tilewms.component.ts
index 0031d2e1..11ee5680 100644
--- a/projects/ngx-openlayers/src/lib/sources/tilewms.component.ts
+++ b/projects/ngx-openlayers/src/lib/sources/tilewms.component.ts
@@ -1,4 +1,4 @@
-import { Component, Host, Input, OnInit, forwardRef } from '@angular/core';
+import { Component, Host, Input, OnChanges, OnInit, forwardRef, SimpleChanges } from '@angular/core';
import { source, TileLoadFunctionType, tilegrid } from 'openlayers';
import { LayerTileComponent } from '../layers/layertile.component';
import { SourceComponent } from './source.component';
@@ -8,7 +8,7 @@ import { SourceComponent } from './source.component';
template: ``,
providers: [{ provide: SourceComponent, useExisting: forwardRef(() => SourceTileWMSComponent) }],
})
-export class SourceTileWMSComponent extends SourceComponent implements OnInit {
+export class SourceTileWMSComponent extends SourceComponent implements OnChanges, OnInit {
instance: source.TileWMS;
@Input()
cacheSize: number;
@@ -45,4 +45,10 @@ export class SourceTileWMSComponent extends SourceComponent implements OnInit {
this.instance = new source.TileWMS(this);
this.host.instance.setSource(this.instance);
}
+
+ ngOnChanges(changes: SimpleChanges) {
+ if (this.instance && changes.hasOwnProperty('params')) {
+ this.instance.updateParams(this.params);
+ }
+ }
}
From c40eec72d9e18585d4caa94700b11e72296e47d5 Mon Sep 17 00:00:00 2001
From: FallenRiteMonk
Date: Wed, 10 Oct 2018 16:52:26 +0200
Subject: [PATCH 3/3] ssr support
---
.../ngx-openlayers/src/lib/map.component.ts | 25 +++++++++++++++++--
1 file changed, 23 insertions(+), 2 deletions(-)
diff --git a/projects/ngx-openlayers/src/lib/map.component.ts b/projects/ngx-openlayers/src/lib/map.component.ts
index 1b32b268..a379ecc3 100644
--- a/projects/ngx-openlayers/src/lib/map.component.ts
+++ b/projects/ngx-openlayers/src/lib/map.component.ts
@@ -8,12 +8,15 @@ import {
AfterViewInit,
SimpleChanges,
OnChanges,
+ Inject,
+ PLATFORM_ID,
} from '@angular/core';
import { Map, MapBrowserEvent, MapEvent, render, ObjectEvent, control, interaction } from 'openlayers';
+import { isPlatformBrowser } from '@angular/common';
@Component({
selector: 'aol-map',
- template: ``,
+ template: ``,
})
export class MapComponent implements OnInit, AfterViewInit, OnChanges {
public instance: Map;
@@ -60,8 +63,14 @@ export class MapComponent implements OnInit, AfterViewInit, OnChanges {
// we pass empty arrays to not get default controls/interactions because we have our own directives
controls: control.Control[] = [];
interactions: interaction.Interaction[] = [];
+ isBrowser: boolean;
+
+ constructor(@Inject(PLATFORM_ID) private platformId, private host: ElementRef) {
+ this.isBrowser = isPlatformBrowser(this.platformId);
+ if (!this.isBrowser) {
+ return;
+ }
- constructor(private host: ElementRef) {
this.onClick = new EventEmitter();
this.onDblClick = new EventEmitter();
this.onMoveEnd = new EventEmitter();
@@ -75,6 +84,10 @@ export class MapComponent implements OnInit, AfterViewInit, OnChanges {
}
ngOnInit() {
+ if (!this.isBrowser) {
+ return;
+ }
+
// console.log('creating ol.Map instance with:', this);
this.instance = new Map(this);
this.instance.setTarget(this.host.nativeElement.firstElementChild);
@@ -91,6 +104,10 @@ export class MapComponent implements OnInit, AfterViewInit, OnChanges {
}
ngOnChanges(changes: SimpleChanges) {
+ if (!this.isBrowser) {
+ return;
+ }
+
const properties: { [index: string]: any } = {};
if (!this.instance) {
return;
@@ -105,6 +122,10 @@ export class MapComponent implements OnInit, AfterViewInit, OnChanges {
}
ngAfterViewInit() {
+ if (!this.isBrowser) {
+ return;
+ }
+
this.instance.updateSize();
}
}