@angular-helpers/openlayers 22.0.1 → 22.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/angular-helpers-openlayers-controls.mjs +32 -32
- package/fesm2022/angular-helpers-openlayers-core.mjs +52 -33
- package/fesm2022/angular-helpers-openlayers-interactions.mjs +61 -34
- package/fesm2022/angular-helpers-openlayers-layers.mjs +48 -27
- package/fesm2022/angular-helpers-openlayers-military.mjs +6 -6
- package/fesm2022/angular-helpers-openlayers-overlays.mjs +9 -9
- package/package.json +1 -1
- package/types/angular-helpers-openlayers-controls.d.ts +2 -2
- package/types/angular-helpers-openlayers-interactions.d.ts +19 -4
- package/types/angular-helpers-openlayers-layers.d.ts +8 -1
|
@@ -46,10 +46,10 @@ class OlZoomControlComponent {
|
|
|
46
46
|
});
|
|
47
47
|
});
|
|
48
48
|
}
|
|
49
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
50
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.
|
|
49
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlZoomControlComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
50
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.2", type: OlZoomControlComponent, isStandalone: true, selector: "ol-zoom-control", inputs: { delta: { classPropertyName: "delta", publicName: "delta", isSignal: true, isRequired: false, transformFunction: null }, duration: { classPropertyName: "duration", publicName: "duration", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: '', isInline: true });
|
|
51
51
|
}
|
|
52
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
52
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlZoomControlComponent, decorators: [{
|
|
53
53
|
type: Component,
|
|
54
54
|
args: [{
|
|
55
55
|
selector: 'ol-zoom-control',
|
|
@@ -92,10 +92,10 @@ class OlAttributionControlComponent {
|
|
|
92
92
|
});
|
|
93
93
|
});
|
|
94
94
|
}
|
|
95
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
96
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.
|
|
95
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlAttributionControlComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
96
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.2", type: OlAttributionControlComponent, isStandalone: true, selector: "ol-attribution-control", inputs: { collapsible: { classPropertyName: "collapsible", publicName: "collapsible", isSignal: true, isRequired: false, transformFunction: null }, collapsed: { classPropertyName: "collapsed", publicName: "collapsed", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: '', isInline: true });
|
|
97
97
|
}
|
|
98
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
98
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlAttributionControlComponent, decorators: [{
|
|
99
99
|
type: Component,
|
|
100
100
|
args: [{
|
|
101
101
|
selector: 'ol-attribution-control',
|
|
@@ -141,10 +141,10 @@ class OlScaleLineControlComponent {
|
|
|
141
141
|
});
|
|
142
142
|
});
|
|
143
143
|
}
|
|
144
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
145
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.
|
|
144
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlScaleLineControlComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
145
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.2", type: OlScaleLineControlComponent, isStandalone: true, selector: "ol-scale-line-control", inputs: { units: { classPropertyName: "units", publicName: "units", isSignal: true, isRequired: false, transformFunction: null }, bar: { classPropertyName: "bar", publicName: "bar", isSignal: true, isRequired: false, transformFunction: null }, steps: { classPropertyName: "steps", publicName: "steps", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: '', isInline: true });
|
|
146
146
|
}
|
|
147
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
147
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlScaleLineControlComponent, decorators: [{
|
|
148
148
|
type: Component,
|
|
149
149
|
args: [{
|
|
150
150
|
selector: 'ol-scale-line-control',
|
|
@@ -193,10 +193,10 @@ class OlFullscreenControlComponent {
|
|
|
193
193
|
});
|
|
194
194
|
});
|
|
195
195
|
}
|
|
196
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
197
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.
|
|
196
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlFullscreenControlComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
197
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.2", type: OlFullscreenControlComponent, isStandalone: true, selector: "ol-fullscreen-control", inputs: { source: { classPropertyName: "source", publicName: "source", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, labelActive: { classPropertyName: "labelActive", publicName: "labelActive", isSignal: true, isRequired: false, transformFunction: null }, tipLabel: { classPropertyName: "tipLabel", publicName: "tipLabel", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: '', isInline: true });
|
|
198
198
|
}
|
|
199
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
199
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlFullscreenControlComponent, decorators: [{
|
|
200
200
|
type: Component,
|
|
201
201
|
args: [{
|
|
202
202
|
selector: 'ol-fullscreen-control',
|
|
@@ -252,10 +252,10 @@ class OlRotateControlComponent {
|
|
|
252
252
|
});
|
|
253
253
|
});
|
|
254
254
|
}
|
|
255
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
256
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.
|
|
255
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlRotateControlComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
256
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.2", type: OlRotateControlComponent, isStandalone: true, selector: "ol-rotate-control", inputs: { autoHide: { classPropertyName: "autoHide", publicName: "autoHide", isSignal: true, isRequired: false, transformFunction: null }, duration: { classPropertyName: "duration", publicName: "duration", isSignal: true, isRequired: false, transformFunction: null }, tipLabel: { classPropertyName: "tipLabel", publicName: "tipLabel", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: '', isInline: true });
|
|
257
257
|
}
|
|
258
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
258
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlRotateControlComponent, decorators: [{
|
|
259
259
|
type: Component,
|
|
260
260
|
args: [{
|
|
261
261
|
selector: 'ol-rotate-control',
|
|
@@ -313,8 +313,8 @@ class OlLayerSwitcherComponent {
|
|
|
313
313
|
const value = event.target.valueAsNumber;
|
|
314
314
|
this.opacityChange.emit({ id, opacity: value });
|
|
315
315
|
}
|
|
316
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
317
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.
|
|
316
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlLayerSwitcherComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
317
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.2", type: OlLayerSwitcherComponent, isStandalone: true, selector: "ol-layer-switcher", inputs: { position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, layers: { classPropertyName: "layers", publicName: "layers", isSignal: true, isRequired: false, transformFunction: null }, collapsible: { classPropertyName: "collapsible", publicName: "collapsible", isSignal: true, isRequired: false, transformFunction: null }, showOpacity: { classPropertyName: "showOpacity", publicName: "showOpacity", isSignal: true, isRequired: false, transformFunction: null }, startCollapsed: { classPropertyName: "startCollapsed", publicName: "startCollapsed", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visibilityChange: "visibilityChange", opacityChange: "opacityChange" }, ngImport: i0, template: `
|
|
318
318
|
<div
|
|
319
319
|
class="ol-layer-switcher"
|
|
320
320
|
[class.collapsed]="isCollapsed()"
|
|
@@ -398,7 +398,7 @@ class OlLayerSwitcherComponent {
|
|
|
398
398
|
</div>
|
|
399
399
|
`, isInline: true, styles: [":host{display:block}.ol-layer-switcher{position:absolute;background:#fffffff2;color:#333;border-radius:4px;border:none;box-shadow:0 1px 4px #0000004d;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:13px;min-width:36px;z-index:10;transition:all .2s ease}.ol-layer-switcher--top-left{top:.5em;left:.5em}.ol-layer-switcher--top-right{top:10em;right:.5em}.ol-layer-switcher--bottom-left{bottom:.5em;left:.5em}.ol-layer-switcher--bottom-right{bottom:.5em;right:.5em}.ol-layer-switcher.collapsed{min-width:auto}.ol-layer-switcher__toggle{display:flex;align-items:center;gap:6px;padding:4px 8px;background:transparent;color:#333;border:none;border-bottom:1px solid rgba(0,0,0,.08);border-radius:4px 4px 0 0;cursor:pointer;width:100%;font-size:13px;font-weight:600;transition:background .15s ease;min-height:36px}.ol-layer-switcher.collapsed .ol-layer-switcher__toggle{border-bottom:none;border-radius:4px;padding:4px 6px;justify-content:center}.ol-layer-switcher__toggle:hover{background:#0000000d}.ol-layer-switcher__icon{font-size:14px;line-height:1}.ol-layer-switcher__title{font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.5px}.ol-layer-switcher.collapsed .ol-layer-switcher__title,.ol-layer-switcher.collapsed .ol-layer-switcher__panel{display:none}.ol-layer-switcher__panel{padding:6px;max-height:300px;overflow-y:auto}.ol-layer-switcher__empty{padding:12px;color:#6b7280;text-align:center;font-style:italic;font-size:12px}.ol-layer-switcher__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.ol-layer-switcher__item{padding:5px 8px;border-radius:3px;transition:background .15s ease}.ol-layer-switcher__item:hover{background:#0000000a}.ol-layer-switcher__label{display:flex;align-items:center;gap:6px;cursor:pointer;font-size:12px}.ol-layer-switcher__checkbox{cursor:pointer;accent-color:#1a73e8}.ol-layer-switcher__name{flex:1;font-weight:500;color:#333;font-size:12px}.ol-layer-switcher__type{font-size:9px;padding:2px 5px;border-radius:3px;font-weight:700;text-transform:uppercase;background:#0000000f;color:#555;letter-spacing:.3px}.ol-layer-switcher__type--vector{background:#3b82f61f;color:#2563eb}.ol-layer-switcher__type--tile{background:#22c55e1f;color:#16a34a}.ol-layer-switcher__type--image{background:#f59e0b1f;color:#d97706}.ol-layer-switcher__opacity{width:100%;margin-top:4px;cursor:pointer;height:4px;accent-color:#1a73e8}\n"] });
|
|
400
400
|
}
|
|
401
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
401
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlLayerSwitcherComponent, decorators: [{
|
|
402
402
|
type: Component,
|
|
403
403
|
args: [{ selector: 'ol-layer-switcher', template: `
|
|
404
404
|
<div
|
|
@@ -536,8 +536,8 @@ class OlBasemapSwitcherComponent {
|
|
|
536
536
|
return '🗺️';
|
|
537
537
|
}
|
|
538
538
|
}
|
|
539
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
540
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.
|
|
539
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlBasemapSwitcherComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
540
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.2", type: OlBasemapSwitcherComponent, isStandalone: true, selector: "ol-basemap-switcher", inputs: { basemaps: { classPropertyName: "basemaps", publicName: "basemaps", isSignal: true, isRequired: false, transformFunction: null }, activeBasemap: { classPropertyName: "activeBasemap", publicName: "activeBasemap", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { basemapChange: "basemapChange" }, ngImport: i0, template: `
|
|
541
541
|
<div
|
|
542
542
|
class="ol-basemap-switcher"
|
|
543
543
|
[class.ol-basemap-switcher--top-left]="position() === 'top-left'"
|
|
@@ -597,7 +597,7 @@ class OlBasemapSwitcherComponent {
|
|
|
597
597
|
</div>
|
|
598
598
|
`, isInline: true, styles: [":host{display:block}.ol-basemap-switcher{position:absolute;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:13px;color:#333;z-index:10}.ol-basemap-switcher--top-left{top:.5em;left:.5em}.ol-basemap-switcher--top-center{top:.5em;left:50%;transform:translate(-50%)}.ol-basemap-switcher--top-right{top:.5em;right:.5em}.ol-basemap-switcher--bottom-left{bottom:.5em;left:.5em}.ol-basemap-switcher--bottom-center{bottom:.5em;left:50%;transform:translate(-50%)}.ol-basemap-switcher--bottom-right{bottom:.5em;right:.5em}.ol-basemap-switcher__toggle{display:flex;align-items:center;gap:6px;padding:4px 10px;background:#fffffff2;color:#333;border:none;border-radius:4px;box-shadow:0 1px 4px #0000004d;cursor:pointer;font-size:12px;font-weight:600;transition:background .15s ease;min-height:36px}.ol-basemap-switcher__toggle:hover{background:#fff}.ol-basemap-switcher__toggle-icon{font-size:14px;line-height:1}.ol-basemap-switcher__toggle-text{font-weight:600;font-size:12px}.ol-basemap-switcher__panel{position:absolute;bottom:calc(100% + 6px);left:0;background:#fffffff2;border:none;color:#333;border-radius:4px;box-shadow:0 1px 4px #0000004d;padding:4px;min-width:160px;display:flex;flex-direction:column;gap:2px}.ol-basemap-switcher--bottom-right .ol-basemap-switcher__panel,.ol-basemap-switcher--top-right .ol-basemap-switcher__panel{left:auto;right:0}.ol-basemap-switcher--top-left .ol-basemap-switcher__panel,.ol-basemap-switcher--top-center .ol-basemap-switcher__panel,.ol-basemap-switcher--top-right .ol-basemap-switcher__panel{bottom:auto;top:calc(100% + 6px)}.ol-basemap-switcher--top-center .ol-basemap-switcher__panel,.ol-basemap-switcher--bottom-center .ol-basemap-switcher__panel{left:50%;transform:translate(-50%)}.ol-basemap-switcher__item{display:flex;align-items:center;gap:8px;width:100%;padding:6px 10px;border:none;background:transparent;border-radius:3px;cursor:pointer;text-align:left;font-size:12px;transition:background .15s ease}.ol-basemap-switcher__item:hover{background:#0000000d}.ol-basemap-switcher__item--active{background:#1a73e81f;color:#1a73e8;font-weight:600}.ol-basemap-switcher__item--active:hover{background:#1a73e82e}.ol-basemap-switcher__icon{font-size:14px}.ol-basemap-switcher__name{font-weight:500;color:#333;font-size:12px}\n"] });
|
|
599
599
|
}
|
|
600
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
600
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlBasemapSwitcherComponent, decorators: [{
|
|
601
601
|
type: Component,
|
|
602
602
|
args: [{ selector: 'ol-basemap-switcher', template: `
|
|
603
603
|
<div
|
|
@@ -767,8 +767,8 @@ class OlGeolocationControlComponent {
|
|
|
767
767
|
});
|
|
768
768
|
}
|
|
769
769
|
}
|
|
770
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
771
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.
|
|
770
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlGeolocationControlComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
771
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.2", type: OlGeolocationControlComponent, isStandalone: true, selector: "ol-geolocation-control", inputs: { position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { trackingChange: "trackingChange" }, viewQueries: [{ propertyName: "controlElement", first: true, predicate: ["controlElement"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
772
772
|
<div
|
|
773
773
|
#controlElement
|
|
774
774
|
class="ol-geolocation-control ol-unselectable ol-control"
|
|
@@ -801,7 +801,7 @@ class OlGeolocationControlComponent {
|
|
|
801
801
|
</div>
|
|
802
802
|
`, isInline: true, styles: [".ol-geolocation-control{position:absolute}.ol-geolocation-control.top-left{top:4.5em;left:.5em}.ol-geolocation-control.top-right{top:4.5em;right:.5em}.ol-geolocation-control.bottom-left{bottom:.5em;left:.5em}.ol-geolocation-control.bottom-right{bottom:.5em;right:.5em}button{display:flex;align-items:center;justify-content:center;width:1.375em;height:1.375em;padding:0;background-color:#fff6;border:none;cursor:pointer;border-radius:2px;color:#333;transition:all .2s}button:hover{background-color:#fffc}button.active{color:#3b82f6;background-color:#ffffffe6}.geolocation-icon{width:1em;height:1em}\n"] });
|
|
803
803
|
}
|
|
804
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
804
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlGeolocationControlComponent, decorators: [{
|
|
805
805
|
type: Component,
|
|
806
806
|
args: [{ selector: 'ol-geolocation-control', template: `
|
|
807
807
|
<div
|
|
@@ -839,12 +839,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImpor
|
|
|
839
839
|
|
|
840
840
|
// OlControlService
|
|
841
841
|
class OlControlService {
|
|
842
|
-
addCustomControl(
|
|
843
|
-
removeCustomControl(
|
|
844
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
845
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.
|
|
842
|
+
addCustomControl(_element, _position) { }
|
|
843
|
+
removeCustomControl(_element) { }
|
|
844
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlControlService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
845
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlControlService });
|
|
846
846
|
}
|
|
847
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
847
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlControlService, decorators: [{
|
|
848
848
|
type: Injectable
|
|
849
849
|
}] });
|
|
850
850
|
|
|
@@ -977,8 +977,8 @@ class OlTimelineComponent {
|
|
|
977
977
|
const value = Number(target.value);
|
|
978
978
|
this.timeService.setSpeed(value);
|
|
979
979
|
}
|
|
980
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
981
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.
|
|
980
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlTimelineComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
981
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.2", type: OlTimelineComponent, isStandalone: true, selector: "ol-timeline", inputs: { startTime: { classPropertyName: "startTime", publicName: "startTime", isSignal: true, isRequired: true, transformFunction: null }, endTime: { classPropertyName: "endTime", publicName: "endTime", isSignal: true, isRequired: true, transformFunction: null }, playSpeed: { classPropertyName: "playSpeed", publicName: "playSpeed", isSignal: true, isRequired: false, transformFunction: null }, loop: { classPropertyName: "loop", publicName: "loop", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, formatLabel: { classPropertyName: "formatLabel", publicName: "formatLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { timeChange: "timeChange", playStateChange: "playStateChange" }, ngImport: i0, template: `
|
|
982
982
|
<div
|
|
983
983
|
class="ol-timeline"
|
|
984
984
|
[class.ol-timeline--top-left]="position() === 'top-left'"
|
|
@@ -1044,7 +1044,7 @@ class OlTimelineComponent {
|
|
|
1044
1044
|
</div>
|
|
1045
1045
|
`, isInline: true, styles: [":host{display:block}.ol-timeline{position:absolute;display:flex;align-items:center;gap:16px;padding:8px 16px;background:#1e1e1ebf;backdrop-filter:blur(12px) saturate(160%);-webkit-backdrop-filter:blur(12px) saturate(160%);border:1px solid rgba(255,255,255,.08);border-radius:24px;box-shadow:0 8px 32px #0000004d;color:#f3f3f3;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:13px;z-index:10;width:calc(100% - 32px);max-width:600px;box-sizing:border-box}.ol-timeline--top-left{top:12px;left:12px}.ol-timeline--top-center{top:12px;left:50%;transform:translate(-50%)}.ol-timeline--top-right{top:12px;right:12px}.ol-timeline--bottom-left{bottom:12px;left:12px}.ol-timeline--bottom-center{bottom:24px;left:50%;transform:translate(-50%)}.ol-timeline--bottom-right{bottom:12px;right:12px}.ol-timeline__controls{display:flex;align-items:center;gap:12px;flex-shrink:0}.ol-timeline__btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;border-radius:50%;background:#ffffff1a;color:#fff;cursor:pointer;transition:background .15s ease,transform .15s ease}.ol-timeline__btn:hover{background:#fff3;transform:scale(1.05)}.ol-timeline__btn:active{transform:scale(.95)}.ol-timeline__time-display{font-variant-numeric:tabular-nums;font-weight:500;color:#e0e0e0;min-width:140px;text-align:center}.ol-timeline__slider-container{flex-grow:1;display:flex;align-items:center}.ol-timeline__slider{-webkit-appearance:none;width:100%;height:4px;border-radius:2px;background:#fff3;outline:none;cursor:pointer;transition:background .15s ease}.ol-timeline__slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:14px;height:14px;border-radius:50%;background:#1a73e8;box-shadow:0 1px 4px #0006;cursor:pointer;transition:background .15s ease,transform .15s ease}.ol-timeline__slider::-webkit-slider-thumb:hover{background:#2b84f0;transform:scale(1.15)}.ol-timeline__slider::-moz-range-thumb{width:14px;height:14px;border:none;border-radius:50%;background:#1a73e8;box-shadow:0 1px 4px #0006;cursor:pointer;transition:background .15s ease,transform .15s ease}.ol-timeline__slider::-moz-range-thumb:hover{background:#2b84f0;transform:scale(1.15)}.ol-timeline__settings{flex-shrink:0}.ol-timeline__speed-select{background:#ffffff1a;color:#fff;border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:4px 8px;font-size:11px;font-weight:500;outline:none;cursor:pointer;transition:background .15s ease}.ol-timeline__speed-select:hover{background:#ffffff26}.ol-timeline__speed-select option{background:#1e1e1e;color:#fff}\n"] });
|
|
1046
1046
|
}
|
|
1047
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
1047
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlTimelineComponent, decorators: [{
|
|
1048
1048
|
type: Component,
|
|
1049
1049
|
args: [{ selector: 'ol-timeline', imports: [], template: `
|
|
1050
1050
|
<div
|
|
@@ -57,10 +57,10 @@ class OlZoneHelper {
|
|
|
57
57
|
}
|
|
58
58
|
return fn();
|
|
59
59
|
}
|
|
60
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
61
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.
|
|
60
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlZoneHelper, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
61
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlZoneHelper });
|
|
62
62
|
}
|
|
63
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
63
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlZoneHelper, decorators: [{
|
|
64
64
|
type: Injectable
|
|
65
65
|
}] });
|
|
66
66
|
|
|
@@ -149,10 +149,10 @@ class OlMapService {
|
|
|
149
149
|
rotation: view.getRotation() ?? 0,
|
|
150
150
|
};
|
|
151
151
|
}
|
|
152
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
153
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.
|
|
152
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlMapService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
153
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlMapService });
|
|
154
154
|
}
|
|
155
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
155
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlMapService, decorators: [{
|
|
156
156
|
type: Injectable
|
|
157
157
|
}] });
|
|
158
158
|
|
|
@@ -312,11 +312,11 @@ class OlMapComponent {
|
|
|
312
312
|
});
|
|
313
313
|
}
|
|
314
314
|
}
|
|
315
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
316
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.
|
|
315
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlMapComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
316
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.2", type: OlMapComponent, isStandalone: true, selector: "ol-map", inputs: { center: { classPropertyName: "center", publicName: "center", isSignal: true, isRequired: false, transformFunction: null }, zoom: { classPropertyName: "zoom", publicName: "zoom", isSignal: true, isRequired: false, transformFunction: null }, rotation: { classPropertyName: "rotation", publicName: "rotation", isSignal: true, isRequired: false, transformFunction: null }, projection: { classPropertyName: "projection", publicName: "projection", isSignal: true, isRequired: false, transformFunction: null }, coordinateProjection: { classPropertyName: "coordinateProjection", publicName: "coordinateProjection", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { viewChange: "viewChange", mapClick: "mapClick", mapDblClick: "mapDblClick" }, viewQueries: [{ propertyName: "mapContainerRef", first: true, predicate: ["mapContainer"], descendants: true, isSignal: true }], ngImport: i0, template: `<div class="ol-map-container" #mapContainer></div>
|
|
317
317
|
<ng-content />`, isInline: true, styles: [":host{display:block;width:100%;height:100%;position:relative}.ol-map-container{width:100%;height:100%}\n"] });
|
|
318
318
|
}
|
|
319
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
319
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlMapComponent, decorators: [{
|
|
320
320
|
type: Component,
|
|
321
321
|
args: [{ selector: 'ol-map', template: `<div class="ol-map-container" #mapContainer></div>
|
|
322
322
|
<ng-content />`, styles: [":host{display:block;width:100%;height:100%;position:relative}.ol-map-container{width:100%;height:100%}\n"] }]
|
|
@@ -341,17 +341,29 @@ class OlGeometryService {
|
|
|
341
341
|
if (segments < 8) {
|
|
342
342
|
throw new RangeError('segments must be >= 8');
|
|
343
343
|
}
|
|
344
|
-
const
|
|
345
|
-
const
|
|
344
|
+
const rRadius = 6371008.8; // Standard Earth radius used by OpenLayers
|
|
345
|
+
const alpha = semiMajor / rRadius;
|
|
346
|
+
const beta = semiMinor / rRadius;
|
|
347
|
+
// Failsafe for strategic-scale inputs exceeding spherical boundaries (quarter of Earth)
|
|
348
|
+
if (alpha >= Math.PI / 2 || beta >= Math.PI / 2) {
|
|
349
|
+
throw new RangeError('semiMajor and semiMinor must be less than quarter of Earth circumference');
|
|
350
|
+
}
|
|
351
|
+
const tanAlpha = Math.tan(alpha);
|
|
352
|
+
const tanBeta = Math.tan(beta);
|
|
353
|
+
const tanAlphaSq = tanAlpha * tanAlpha;
|
|
354
|
+
const tanBetaSq = tanBeta * tanBeta;
|
|
346
355
|
const ring = [];
|
|
347
356
|
for (let i = 0; i < segments; i++) {
|
|
348
357
|
const theta = (i / segments) * Math.PI * 2;
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
const
|
|
353
|
-
const
|
|
354
|
-
|
|
358
|
+
const cosT = Math.cos(theta);
|
|
359
|
+
// Spherical ellipse polar equation:
|
|
360
|
+
// tan^2(rho) = tan^2(beta) / (1 - cos^2(theta) * (1 - tan^2(beta) / tan^2(alpha)))
|
|
361
|
+
const denom = 1 - cosT * cosT * (1 - tanBetaSq / tanAlphaSq);
|
|
362
|
+
const tanSqRho = tanBetaSq / denom;
|
|
363
|
+
const rho = Math.atan(Math.sqrt(tanSqRho));
|
|
364
|
+
const distance = rho * rRadius;
|
|
365
|
+
const bearing = Math.PI / 2 - (rotation + theta);
|
|
366
|
+
ring.push(offset(center, distance, bearing));
|
|
355
367
|
}
|
|
356
368
|
ring.push(ring[0]); // close the ring
|
|
357
369
|
return {
|
|
@@ -380,11 +392,22 @@ class OlGeometryService {
|
|
|
380
392
|
}
|
|
381
393
|
const ring = [center];
|
|
382
394
|
const span = endAngle - startAngle;
|
|
395
|
+
const bearingStart = Math.PI / 2 - startAngle;
|
|
396
|
+
const bearingEnd = Math.PI / 2 - endAngle;
|
|
397
|
+
if (radius > 100_000) {
|
|
398
|
+
for (let j = 1; j <= 15; j++) {
|
|
399
|
+
ring.push(offset(center, (j / 16) * radius, bearingStart));
|
|
400
|
+
}
|
|
401
|
+
}
|
|
383
402
|
for (let i = 0; i <= segments; i++) {
|
|
384
403
|
const theta = startAngle + (i / segments) * span;
|
|
385
|
-
const
|
|
386
|
-
|
|
387
|
-
|
|
404
|
+
const bearing = Math.PI / 2 - theta;
|
|
405
|
+
ring.push(offset(center, radius, bearing));
|
|
406
|
+
}
|
|
407
|
+
if (radius > 100_000) {
|
|
408
|
+
for (let j = 1; j <= 15; j++) {
|
|
409
|
+
ring.push(offset(center, ((16 - j) / 16) * radius, bearingEnd));
|
|
410
|
+
}
|
|
388
411
|
}
|
|
389
412
|
ring.push(center); // close back to apex
|
|
390
413
|
return {
|
|
@@ -413,13 +436,9 @@ class OlGeometryService {
|
|
|
413
436
|
const inner = [];
|
|
414
437
|
for (let i = 0; i < segments; i++) {
|
|
415
438
|
const theta = (i / segments) * Math.PI * 2;
|
|
416
|
-
const
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
outer.push(this.offsetMetersToLonLat(center, cosT * outerRadius, sinT * outerRadius));
|
|
420
|
-
// Inner ring: CW — sample the SAME thetas but we'll reverse the
|
|
421
|
-
// accumulator below so the ring is traversed in the opposite sense.
|
|
422
|
-
inner.push(this.offsetMetersToLonLat(center, cosT * innerRadius, sinT * innerRadius));
|
|
439
|
+
const bearing = Math.PI / 2 - theta;
|
|
440
|
+
outer.push(offset(center, outerRadius, bearing));
|
|
441
|
+
inner.push(offset(center, innerRadius, bearing));
|
|
423
442
|
}
|
|
424
443
|
inner.reverse();
|
|
425
444
|
outer.push(outer[0]);
|
|
@@ -444,10 +463,10 @@ class OlGeometryService {
|
|
|
444
463
|
nextId(kind) {
|
|
445
464
|
return `${kind}-${++this.idCounter}`;
|
|
446
465
|
}
|
|
447
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
448
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.
|
|
466
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlGeometryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
467
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlGeometryService, providedIn: 'root' });
|
|
449
468
|
}
|
|
450
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
469
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlGeometryService, decorators: [{
|
|
451
470
|
type: Injectable,
|
|
452
471
|
args: [{
|
|
453
472
|
providedIn: 'root',
|
|
@@ -529,10 +548,10 @@ class OlTimeService {
|
|
|
529
548
|
this.pause();
|
|
530
549
|
this.setTime(resetTime);
|
|
531
550
|
}
|
|
532
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
533
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.
|
|
551
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlTimeService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
552
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlTimeService, providedIn: 'root' });
|
|
534
553
|
}
|
|
535
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
554
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlTimeService, decorators: [{
|
|
536
555
|
type: Injectable,
|
|
537
556
|
args: [{ providedIn: 'root' }]
|
|
538
557
|
}] });
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { signal, computed, Injectable, inject, DestroyRef, input, effect, Component } from '@angular/core';
|
|
2
|
+
import { signal, computed, Injectable, inject, DestroyRef, input, effect, Component, output } from '@angular/core';
|
|
3
3
|
import { OlMapService, OlZoneHelper, olFeatureToFeature } from '@angular-helpers/openlayers/core';
|
|
4
4
|
import { Subject } from 'rxjs';
|
|
5
5
|
import Select from 'ol/interaction/Select';
|
|
@@ -15,7 +15,7 @@ import VectorLayer from 'ol/layer/Vector';
|
|
|
15
15
|
import Overlay from 'ol/Overlay';
|
|
16
16
|
import { getLength, getArea } from 'ol/sphere';
|
|
17
17
|
import { unByKey } from 'ol/Observable';
|
|
18
|
-
import { outputFromObservable } from '@angular/core/rxjs-interop';
|
|
18
|
+
import { outputFromObservable, takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
19
19
|
import { filter } from 'rxjs/operators';
|
|
20
20
|
|
|
21
21
|
// Interaction state management service
|
|
@@ -36,6 +36,7 @@ class InteractionStateService {
|
|
|
36
36
|
drawEndSubject = new Subject();
|
|
37
37
|
modifySubject = new Subject();
|
|
38
38
|
selectSubject = new Subject();
|
|
39
|
+
hoverSubject = new Subject();
|
|
39
40
|
// Public readonly signals
|
|
40
41
|
selectedFeatures = computed(() => this.selectedFeaturesInternal(), /* @ts-ignore */
|
|
41
42
|
...(ngDevMode ? [{ debugName: "selectedFeatures" }] : /* istanbul ignore next */ []));
|
|
@@ -52,6 +53,7 @@ class InteractionStateService {
|
|
|
52
53
|
drawEnd$ = this.drawEndSubject.asObservable();
|
|
53
54
|
modify$ = this.modifySubject.asObservable();
|
|
54
55
|
select$ = this.selectSubject.asObservable();
|
|
56
|
+
hover$ = this.hoverSubject.asObservable();
|
|
55
57
|
/**
|
|
56
58
|
* Adds a managed interaction to the state.
|
|
57
59
|
* If the interaction is marked as exclusive, it disables other exclusive interactions.
|
|
@@ -140,6 +142,13 @@ class InteractionStateService {
|
|
|
140
142
|
emitSelect(event) {
|
|
141
143
|
this.selectSubject.next(event);
|
|
142
144
|
}
|
|
145
|
+
/**
|
|
146
|
+
* Emits a hover event.
|
|
147
|
+
* @param event - The hover event data
|
|
148
|
+
*/
|
|
149
|
+
emitHover(event) {
|
|
150
|
+
this.hoverSubject.next(event);
|
|
151
|
+
}
|
|
143
152
|
/**
|
|
144
153
|
* Gets the current interaction state summary.
|
|
145
154
|
* @returns Array of interaction state objects
|
|
@@ -169,10 +178,10 @@ class InteractionStateService {
|
|
|
169
178
|
this.selectedFeaturesInternal.set([]);
|
|
170
179
|
this.hoveredFeatureInternal.set(null);
|
|
171
180
|
}
|
|
172
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
173
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.
|
|
181
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: InteractionStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
182
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: InteractionStateService });
|
|
174
183
|
}
|
|
175
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
184
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: InteractionStateService, decorators: [{
|
|
176
185
|
type: Injectable
|
|
177
186
|
}] });
|
|
178
187
|
|
|
@@ -203,7 +212,7 @@ class SelectInteractionService {
|
|
|
203
212
|
multi: config.multi ?? false,
|
|
204
213
|
hitTolerance: config.hitTolerance ?? 0,
|
|
205
214
|
condition: config.condition === 'pointerMove' ? pointerMove : click,
|
|
206
|
-
style: (olFeature,
|
|
215
|
+
style: (olFeature, _resolution) => {
|
|
207
216
|
const styles = [];
|
|
208
217
|
// 1. Resolve feature's own custom style (same as layer style Fn)
|
|
209
218
|
const abstractStyle = olFeature.get('__angular_helpers_style__');
|
|
@@ -273,6 +282,7 @@ class SelectInteractionService {
|
|
|
273
282
|
return styles;
|
|
274
283
|
},
|
|
275
284
|
});
|
|
285
|
+
let lastHoveredId = null;
|
|
276
286
|
// Listen to selection changes — use getFeatures().getArray() for the full
|
|
277
287
|
// accumulated collection, not e.selected which only contains newly added ones
|
|
278
288
|
select.on('select', (e) => {
|
|
@@ -281,9 +291,19 @@ class SelectInteractionService {
|
|
|
281
291
|
.getArray()
|
|
282
292
|
.map((f) => olFeatureToFeature(f));
|
|
283
293
|
if (config.condition === 'pointerMove') {
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
294
|
+
const hoveredFeature = allFeatures.length > 0 ? allFeatures[0] : null;
|
|
295
|
+
const hoveredId = hoveredFeature ? hoveredFeature.id : null;
|
|
296
|
+
if (hoveredId !== lastHoveredId) {
|
|
297
|
+
lastHoveredId = hoveredId;
|
|
298
|
+
this.stateService.setHoveredFeature(hoveredFeature);
|
|
299
|
+
this.zoneHelper.runInsideAngular(() => {
|
|
300
|
+
this.stateService.emitHover({
|
|
301
|
+
interactionId: id,
|
|
302
|
+
hoveredId,
|
|
303
|
+
feature: hoveredFeature,
|
|
304
|
+
});
|
|
305
|
+
});
|
|
306
|
+
}
|
|
287
307
|
}
|
|
288
308
|
else {
|
|
289
309
|
this.zoneHelper.runInsideAngular(() => {
|
|
@@ -310,10 +330,10 @@ class SelectInteractionService {
|
|
|
310
330
|
this.stateService.addInteraction(managed);
|
|
311
331
|
});
|
|
312
332
|
}
|
|
313
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
314
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.
|
|
333
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: SelectInteractionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
334
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: SelectInteractionService });
|
|
315
335
|
}
|
|
316
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
336
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: SelectInteractionService, decorators: [{
|
|
317
337
|
type: Injectable
|
|
318
338
|
}] });
|
|
319
339
|
|
|
@@ -465,10 +485,10 @@ class DrawInteractionService {
|
|
|
465
485
|
});
|
|
466
486
|
return true;
|
|
467
487
|
}
|
|
468
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
469
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.
|
|
488
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: DrawInteractionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
489
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: DrawInteractionService });
|
|
470
490
|
}
|
|
471
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
491
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: DrawInteractionService, decorators: [{
|
|
472
492
|
type: Injectable
|
|
473
493
|
}] });
|
|
474
494
|
|
|
@@ -535,10 +555,10 @@ class ModifyInteractionService {
|
|
|
535
555
|
this.stateService.addInteraction(managed);
|
|
536
556
|
});
|
|
537
557
|
}
|
|
538
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
539
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.
|
|
558
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: ModifyInteractionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
559
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: ModifyInteractionService });
|
|
540
560
|
}
|
|
541
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
561
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: ModifyInteractionService, decorators: [{
|
|
542
562
|
type: Injectable
|
|
543
563
|
}] });
|
|
544
564
|
|
|
@@ -579,6 +599,7 @@ class OlInteractionService {
|
|
|
579
599
|
drawEnd$ = this.stateService.drawEnd$;
|
|
580
600
|
modify$ = this.stateService.modify$;
|
|
581
601
|
select$ = this.stateService.select$;
|
|
602
|
+
hover$ = this.stateService.hover$;
|
|
582
603
|
/**
|
|
583
604
|
* Enable a select interaction on the map.
|
|
584
605
|
* @param id - Unique identifier for this interaction
|
|
@@ -688,10 +709,10 @@ class OlInteractionService {
|
|
|
688
709
|
getInteractionState() {
|
|
689
710
|
return this.stateService.getInteractionState();
|
|
690
711
|
}
|
|
691
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
692
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.
|
|
712
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlInteractionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
713
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlInteractionService });
|
|
693
714
|
}
|
|
694
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
715
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlInteractionService, decorators: [{
|
|
695
716
|
type: Injectable
|
|
696
717
|
}] });
|
|
697
718
|
|
|
@@ -847,10 +868,10 @@ class MeasurementInteractionService {
|
|
|
847
868
|
}
|
|
848
869
|
return output;
|
|
849
870
|
}
|
|
850
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
851
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.
|
|
871
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: MeasurementInteractionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
872
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: MeasurementInteractionService });
|
|
852
873
|
}
|
|
853
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
874
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: MeasurementInteractionService, decorators: [{
|
|
854
875
|
type: Injectable
|
|
855
876
|
}] });
|
|
856
877
|
|
|
@@ -894,10 +915,10 @@ class OlDrawInteractionComponent {
|
|
|
894
915
|
this.interactionService.disableInteraction(this.id());
|
|
895
916
|
});
|
|
896
917
|
}
|
|
897
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
898
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.
|
|
918
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlDrawInteractionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
919
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.2", type: OlDrawInteractionComponent, isStandalone: true, selector: "ol-draw-interaction", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: true, transformFunction: null }, source: { classPropertyName: "source", publicName: "source", isSignal: true, isRequired: false, transformFunction: null }, freehand: { classPropertyName: "freehand", publicName: "freehand", isSignal: true, isRequired: false, transformFunction: null }, snapTolerance: { classPropertyName: "snapTolerance", publicName: "snapTolerance", isSignal: true, isRequired: false, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { drawStart: "drawStart", drawEnd: "drawEnd" }, ngImport: i0, template: '', isInline: true });
|
|
899
920
|
}
|
|
900
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
921
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlDrawInteractionComponent, decorators: [{
|
|
901
922
|
type: Component,
|
|
902
923
|
args: [{
|
|
903
924
|
selector: 'ol-draw-interaction',
|
|
@@ -937,10 +958,10 @@ class OlModifyInteractionComponent {
|
|
|
937
958
|
this.interactionService.disableInteraction(this.id());
|
|
938
959
|
});
|
|
939
960
|
}
|
|
940
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
941
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.
|
|
961
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlModifyInteractionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
962
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.2", type: OlModifyInteractionComponent, isStandalone: true, selector: "ol-modify-interaction", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, source: { classPropertyName: "source", publicName: "source", isSignal: true, isRequired: false, transformFunction: null }, snapTolerance: { classPropertyName: "snapTolerance", publicName: "snapTolerance", isSignal: true, isRequired: false, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { modifyEvent: "modifyEvent" }, ngImport: i0, template: '', isInline: true });
|
|
942
963
|
}
|
|
943
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
964
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlModifyInteractionComponent, decorators: [{
|
|
944
965
|
type: Component,
|
|
945
966
|
args: [{
|
|
946
967
|
selector: 'ol-modify-interaction',
|
|
@@ -968,7 +989,13 @@ class OlSelectInteractionComponent {
|
|
|
968
989
|
...(ngDevMode ? [{ debugName: "active" }] : /* istanbul ignore next */ []));
|
|
969
990
|
selectFiltered$ = this.interactionService.select$.pipe(filter((e) => e.interactionId === this.id()));
|
|
970
991
|
selectEvent = outputFromObservable(this.selectFiltered$);
|
|
992
|
+
hoverEvent = output();
|
|
971
993
|
constructor() {
|
|
994
|
+
this.interactionService.hover$
|
|
995
|
+
.pipe(filter((e) => e.interactionId === this.id()), takeUntilDestroyed(this.destroyRef))
|
|
996
|
+
.subscribe((event) => {
|
|
997
|
+
this.hoverEvent.emit(event);
|
|
998
|
+
});
|
|
972
999
|
effect(() => {
|
|
973
1000
|
if (this.active()) {
|
|
974
1001
|
this.interactionService.enableSelect(this.id(), {
|
|
@@ -986,16 +1013,16 @@ class OlSelectInteractionComponent {
|
|
|
986
1013
|
this.interactionService.disableInteraction(this.id());
|
|
987
1014
|
});
|
|
988
1015
|
}
|
|
989
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
990
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.
|
|
1016
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlSelectInteractionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1017
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.2", type: OlSelectInteractionComponent, isStandalone: true, selector: "ol-select-interaction", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, layers: { classPropertyName: "layers", publicName: "layers", isSignal: true, isRequired: false, transformFunction: null }, multi: { classPropertyName: "multi", publicName: "multi", isSignal: true, isRequired: false, transformFunction: null }, hitTolerance: { classPropertyName: "hitTolerance", publicName: "hitTolerance", isSignal: true, isRequired: false, transformFunction: null }, condition: { classPropertyName: "condition", publicName: "condition", isSignal: true, isRequired: false, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectEvent: "selectEvent", hoverEvent: "hoverEvent" }, ngImport: i0, template: '', isInline: true });
|
|
991
1018
|
}
|
|
992
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
1019
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlSelectInteractionComponent, decorators: [{
|
|
993
1020
|
type: Component,
|
|
994
1021
|
args: [{
|
|
995
1022
|
selector: 'ol-select-interaction',
|
|
996
1023
|
template: '',
|
|
997
1024
|
}]
|
|
998
|
-
}], ctorParameters: () => [], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: true }] }], layers: [{ type: i0.Input, args: [{ isSignal: true, alias: "layers", required: false }] }], multi: [{ type: i0.Input, args: [{ isSignal: true, alias: "multi", required: false }] }], hitTolerance: [{ type: i0.Input, args: [{ isSignal: true, alias: "hitTolerance", required: false }] }], condition: [{ type: i0.Input, args: [{ isSignal: true, alias: "condition", required: false }] }], active: [{ type: i0.Input, args: [{ isSignal: true, alias: "active", required: false }] }], selectEvent: [{ type: i0.Output, args: ["selectEvent"] }] } });
|
|
1025
|
+
}], ctorParameters: () => [], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: true }] }], layers: [{ type: i0.Input, args: [{ isSignal: true, alias: "layers", required: false }] }], multi: [{ type: i0.Input, args: [{ isSignal: true, alias: "multi", required: false }] }], hitTolerance: [{ type: i0.Input, args: [{ isSignal: true, alias: "hitTolerance", required: false }] }], condition: [{ type: i0.Input, args: [{ isSignal: true, alias: "condition", required: false }] }], active: [{ type: i0.Input, args: [{ isSignal: true, alias: "active", required: false }] }], selectEvent: [{ type: i0.Output, args: ["selectEvent"] }], hoverEvent: [{ type: i0.Output, args: ["hoverEvent"] }] } });
|
|
999
1026
|
|
|
1000
1027
|
/**
|
|
1001
1028
|
* Provide the interactions feature with OlInteractionService and all specialized services.
|
|
@@ -382,7 +382,7 @@ class OlLayerService {
|
|
|
382
382
|
}
|
|
383
383
|
}
|
|
384
384
|
}
|
|
385
|
-
createVectorSource(config,
|
|
385
|
+
createVectorSource(config, _map) {
|
|
386
386
|
const sourceOptions = {};
|
|
387
387
|
if (config.url && config.format) {
|
|
388
388
|
sourceOptions.url = config.url;
|
|
@@ -715,10 +715,10 @@ class OlLayerService {
|
|
|
715
715
|
});
|
|
716
716
|
this.layerState.set(layers.sort((a, b) => a.zIndex - b.zIndex));
|
|
717
717
|
}
|
|
718
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
719
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.
|
|
718
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlLayerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
719
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlLayerService });
|
|
720
720
|
}
|
|
721
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
721
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlLayerService, decorators: [{
|
|
722
722
|
type: Injectable
|
|
723
723
|
}] });
|
|
724
724
|
|
|
@@ -734,10 +734,10 @@ class OlClusterComponent {
|
|
|
734
734
|
spiderfyOnSelect = input(false, /* @ts-ignore */
|
|
735
735
|
...(ngDevMode ? [{ debugName: "spiderfyOnSelect" }] : /* istanbul ignore next */ []));
|
|
736
736
|
spiderfyClick = output();
|
|
737
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
738
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.
|
|
737
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlClusterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
738
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.2", type: OlClusterComponent, isStandalone: true, selector: "ol-cluster", inputs: { distance: { classPropertyName: "distance", publicName: "distance", isSignal: true, isRequired: false, transformFunction: null }, minDistance: { classPropertyName: "minDistance", publicName: "minDistance", isSignal: true, isRequired: false, transformFunction: null }, showCount: { classPropertyName: "showCount", publicName: "showCount", isSignal: true, isRequired: false, transformFunction: null }, featureStyle: { classPropertyName: "featureStyle", publicName: "featureStyle", isSignal: true, isRequired: false, transformFunction: null }, spiderfyOnSelect: { classPropertyName: "spiderfyOnSelect", publicName: "spiderfyOnSelect", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { spiderfyClick: "spiderfyClick" }, ngImport: i0, template: '', isInline: true });
|
|
739
739
|
}
|
|
740
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
740
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlClusterComponent, decorators: [{
|
|
741
741
|
type: Component,
|
|
742
742
|
args: [{
|
|
743
743
|
selector: 'ol-cluster',
|
|
@@ -842,10 +842,10 @@ class OlVectorLayerComponent {
|
|
|
842
842
|
this.layerService.removeLayer(this.id());
|
|
843
843
|
});
|
|
844
844
|
}
|
|
845
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
846
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.
|
|
845
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlVectorLayerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
846
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.0.2", type: OlVectorLayerComponent, isStandalone: true, selector: "ol-vector-layer", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, features: { classPropertyName: "features", publicName: "features", isSignal: true, isRequired: false, transformFunction: null }, url: { classPropertyName: "url", publicName: "url", isSignal: true, isRequired: false, transformFunction: null }, format: { classPropertyName: "format", publicName: "format", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, opacity: { classPropertyName: "opacity", publicName: "opacity", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, style: { classPropertyName: "style", publicName: "style", isSignal: true, isRequired: false, transformFunction: null }, cluster: { classPropertyName: "cluster", publicName: "cluster", isSignal: true, isRequired: false, transformFunction: null }, coordinateProjection: { classPropertyName: "coordinateProjection", publicName: "coordinateProjection", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "clusterComponent", first: true, predicate: OlClusterComponent, descendants: true, isSignal: true }], ngImport: i0, template: '', isInline: true });
|
|
847
847
|
}
|
|
848
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
848
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlVectorLayerComponent, decorators: [{
|
|
849
849
|
type: Component,
|
|
850
850
|
args: [{
|
|
851
851
|
selector: 'ol-vector-layer',
|
|
@@ -904,10 +904,10 @@ class OlTileLayerComponent {
|
|
|
904
904
|
this.layerService.removeLayer(this.id());
|
|
905
905
|
});
|
|
906
906
|
}
|
|
907
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
908
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.
|
|
907
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlTileLayerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
908
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.2", type: OlTileLayerComponent, isStandalone: true, selector: "ol-tile-layer", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, source: { classPropertyName: "source", publicName: "source", isSignal: true, isRequired: true, transformFunction: null }, url: { classPropertyName: "url", publicName: "url", isSignal: true, isRequired: false, transformFunction: null }, attributions: { classPropertyName: "attributions", publicName: "attributions", isSignal: true, isRequired: false, transformFunction: null }, params: { classPropertyName: "params", publicName: "params", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, opacity: { classPropertyName: "opacity", publicName: "opacity", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: '', isInline: true });
|
|
909
909
|
}
|
|
910
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
910
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlTileLayerComponent, decorators: [{
|
|
911
911
|
type: Component,
|
|
912
912
|
args: [{
|
|
913
913
|
selector: 'ol-tile-layer',
|
|
@@ -957,10 +957,10 @@ class OlImageLayerComponent {
|
|
|
957
957
|
this.layerService.removeLayer(this.id());
|
|
958
958
|
});
|
|
959
959
|
}
|
|
960
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
961
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.
|
|
960
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlImageLayerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
961
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.2", type: OlImageLayerComponent, isStandalone: true, selector: "ol-image-layer", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, sourceType: { classPropertyName: "sourceType", publicName: "sourceType", isSignal: true, isRequired: true, transformFunction: null }, url: { classPropertyName: "url", publicName: "url", isSignal: true, isRequired: true, transformFunction: null }, params: { classPropertyName: "params", publicName: "params", isSignal: true, isRequired: false, transformFunction: null }, imageExtent: { classPropertyName: "imageExtent", publicName: "imageExtent", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, opacity: { classPropertyName: "opacity", publicName: "opacity", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: '', isInline: true });
|
|
962
962
|
}
|
|
963
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
963
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlImageLayerComponent, decorators: [{
|
|
964
964
|
type: Component,
|
|
965
965
|
args: [{
|
|
966
966
|
selector: 'ol-image-layer',
|
|
@@ -1047,10 +1047,10 @@ class OlHeatmapLayerComponent {
|
|
|
1047
1047
|
this.layerService.removeLayer(this.id());
|
|
1048
1048
|
});
|
|
1049
1049
|
}
|
|
1050
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
1051
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.
|
|
1050
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlHeatmapLayerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1051
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.2", type: OlHeatmapLayerComponent, isStandalone: true, selector: "ol-heatmap-layer", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, features: { classPropertyName: "features", publicName: "features", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, opacity: { classPropertyName: "opacity", publicName: "opacity", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, blur: { classPropertyName: "blur", publicName: "blur", isSignal: true, isRequired: false, transformFunction: null }, radius: { classPropertyName: "radius", publicName: "radius", isSignal: true, isRequired: false, transformFunction: null }, radiusUnit: { classPropertyName: "radiusUnit", publicName: "radiusUnit", isSignal: true, isRequired: false, transformFunction: null }, weight: { classPropertyName: "weight", publicName: "weight", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: '', isInline: true });
|
|
1052
1052
|
}
|
|
1053
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
1053
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlHeatmapLayerComponent, decorators: [{
|
|
1054
1054
|
type: Component,
|
|
1055
1055
|
args: [{
|
|
1056
1056
|
selector: 'ol-heatmap-layer',
|
|
@@ -1131,7 +1131,7 @@ class OlWebGLVectorLayerComponent {
|
|
|
1131
1131
|
this.layer.set('id', this.id());
|
|
1132
1132
|
map.addLayer(this.layer);
|
|
1133
1133
|
}
|
|
1134
|
-
catch
|
|
1134
|
+
catch {
|
|
1135
1135
|
// WebGL Vector Layer failed to initialize (e.g., not supported by browser)
|
|
1136
1136
|
}
|
|
1137
1137
|
});
|
|
@@ -1220,10 +1220,10 @@ class OlWebGLVectorLayerComponent {
|
|
|
1220
1220
|
});
|
|
1221
1221
|
this.vectorSource.addFeatures(olFeatures);
|
|
1222
1222
|
}
|
|
1223
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
1224
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.
|
|
1223
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlWebGLVectorLayerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1224
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.2", type: OlWebGLVectorLayerComponent, isStandalone: true, selector: "ol-webgl-vector-layer", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, features: { classPropertyName: "features", publicName: "features", isSignal: true, isRequired: false, transformFunction: null }, flatStyle: { classPropertyName: "flatStyle", publicName: "flatStyle", isSignal: true, isRequired: true, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, opacity: { classPropertyName: "opacity", publicName: "opacity", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, disableHitDetection: { classPropertyName: "disableHitDetection", publicName: "disableHitDetection", isSignal: true, isRequired: false, transformFunction: null }, variables: { classPropertyName: "variables", publicName: "variables", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: '', isInline: true });
|
|
1225
1225
|
}
|
|
1226
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
1226
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlWebGLVectorLayerComponent, decorators: [{
|
|
1227
1227
|
type: Component,
|
|
1228
1228
|
args: [{
|
|
1229
1229
|
selector: 'ol-webgl-vector-layer',
|
|
@@ -1279,6 +1279,9 @@ class OlWebGLTileLayerComponent {
|
|
|
1279
1279
|
/** Preload low-res tiles up to this many zoom levels */
|
|
1280
1280
|
preload = input(0, /* @ts-ignore */
|
|
1281
1281
|
...(ngDevMode ? [{ debugName: "preload" }] : /* istanbul ignore next */ []));
|
|
1282
|
+
/** Style variables for dynamic expressions (e.g. `['var', 'brightness']`) */
|
|
1283
|
+
variables = input(/* @ts-ignore */
|
|
1284
|
+
...(ngDevMode ? [undefined, { debugName: "variables" }] : /* istanbul ignore next */ []));
|
|
1282
1285
|
layer = null;
|
|
1283
1286
|
constructor() {
|
|
1284
1287
|
afterNextRender(() => {
|
|
@@ -1299,6 +1302,7 @@ class OlWebGLTileLayerComponent {
|
|
|
1299
1302
|
opacity: this.opacity(),
|
|
1300
1303
|
zIndex: this.zIndex(),
|
|
1301
1304
|
style: this.tileStyle() || {},
|
|
1305
|
+
...(this.variables() ? { variables: this.variables() } : {}),
|
|
1302
1306
|
});
|
|
1303
1307
|
break;
|
|
1304
1308
|
case 'xyz':
|
|
@@ -1313,6 +1317,7 @@ class OlWebGLTileLayerComponent {
|
|
|
1313
1317
|
zIndex: this.zIndex(),
|
|
1314
1318
|
preload: this.preload(),
|
|
1315
1319
|
...(this.tileStyle() ? { style: this.tileStyle() } : {}),
|
|
1320
|
+
...(this.variables() ? { variables: this.variables() } : {}),
|
|
1316
1321
|
});
|
|
1317
1322
|
break;
|
|
1318
1323
|
case 'osm':
|
|
@@ -1327,6 +1332,7 @@ class OlWebGLTileLayerComponent {
|
|
|
1327
1332
|
zIndex: this.zIndex(),
|
|
1328
1333
|
preload: this.preload(),
|
|
1329
1334
|
...(this.tileStyle() ? { style: this.tileStyle() } : {}),
|
|
1335
|
+
...(this.variables() ? { variables: this.variables() } : {}),
|
|
1330
1336
|
});
|
|
1331
1337
|
break;
|
|
1332
1338
|
}
|
|
@@ -1355,6 +1361,12 @@ class OlWebGLTileLayerComponent {
|
|
|
1355
1361
|
}
|
|
1356
1362
|
}
|
|
1357
1363
|
});
|
|
1364
|
+
effect(() => {
|
|
1365
|
+
const vars = this.variables();
|
|
1366
|
+
if (vars && this.layer) {
|
|
1367
|
+
this.layer.updateStyleVariables(vars);
|
|
1368
|
+
}
|
|
1369
|
+
});
|
|
1358
1370
|
// WebGL tile layers also need manual dispose
|
|
1359
1371
|
this.destroyRef.onDestroy(() => {
|
|
1360
1372
|
const map = this.mapService.getMap();
|
|
@@ -1364,16 +1376,25 @@ class OlWebGLTileLayerComponent {
|
|
|
1364
1376
|
}
|
|
1365
1377
|
});
|
|
1366
1378
|
}
|
|
1367
|
-
|
|
1368
|
-
|
|
1379
|
+
/**
|
|
1380
|
+
* Imperatively update style variables without triggering Angular change detection.
|
|
1381
|
+
* Ideal for 60FPS animations where you don't want to use the declarative [variables] input.
|
|
1382
|
+
*/
|
|
1383
|
+
updateVariables(vars) {
|
|
1384
|
+
if (this.layer) {
|
|
1385
|
+
this.layer.updateStyleVariables(vars);
|
|
1386
|
+
}
|
|
1387
|
+
}
|
|
1388
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlWebGLTileLayerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1389
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.2", type: OlWebGLTileLayerComponent, isStandalone: true, selector: "ol-webgl-tile-layer", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, source: { classPropertyName: "source", publicName: "source", isSignal: true, isRequired: true, transformFunction: null }, url: { classPropertyName: "url", publicName: "url", isSignal: true, isRequired: false, transformFunction: null }, attributions: { classPropertyName: "attributions", publicName: "attributions", isSignal: true, isRequired: false, transformFunction: null }, tileStyle: { classPropertyName: "tileStyle", publicName: "tileStyle", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, opacity: { classPropertyName: "opacity", publicName: "opacity", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, preload: { classPropertyName: "preload", publicName: "preload", isSignal: true, isRequired: false, transformFunction: null }, variables: { classPropertyName: "variables", publicName: "variables", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: '', isInline: true });
|
|
1369
1390
|
}
|
|
1370
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
1391
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlWebGLTileLayerComponent, decorators: [{
|
|
1371
1392
|
type: Component,
|
|
1372
1393
|
args: [{
|
|
1373
1394
|
selector: 'ol-webgl-tile-layer',
|
|
1374
1395
|
template: '',
|
|
1375
1396
|
}]
|
|
1376
|
-
}], ctorParameters: () => [], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: true }] }], source: [{ type: i0.Input, args: [{ isSignal: true, alias: "source", required: true }] }], url: [{ type: i0.Input, args: [{ isSignal: true, alias: "url", required: false }] }], attributions: [{ type: i0.Input, args: [{ isSignal: true, alias: "attributions", required: false }] }], tileStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "tileStyle", required: false }] }], zIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "zIndex", required: false }] }], opacity: [{ type: i0.Input, args: [{ isSignal: true, alias: "opacity", required: false }] }], visible: [{ type: i0.Input, args: [{ isSignal: true, alias: "visible", required: false }] }], preload: [{ type: i0.Input, args: [{ isSignal: true, alias: "preload", required: false }] }] } });
|
|
1397
|
+
}], ctorParameters: () => [], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: true }] }], source: [{ type: i0.Input, args: [{ isSignal: true, alias: "source", required: true }] }], url: [{ type: i0.Input, args: [{ isSignal: true, alias: "url", required: false }] }], attributions: [{ type: i0.Input, args: [{ isSignal: true, alias: "attributions", required: false }] }], tileStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "tileStyle", required: false }] }], zIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "zIndex", required: false }] }], opacity: [{ type: i0.Input, args: [{ isSignal: true, alias: "opacity", required: false }] }], visible: [{ type: i0.Input, args: [{ isSignal: true, alias: "visible", required: false }] }], preload: [{ type: i0.Input, args: [{ isSignal: true, alias: "preload", required: false }] }], variables: [{ type: i0.Input, args: [{ isSignal: true, alias: "variables", required: false }] }] } });
|
|
1377
1398
|
|
|
1378
1399
|
// Provider functions
|
|
1379
1400
|
function withLayers() {
|
|
@@ -156,10 +156,10 @@ class OlMilitaryService {
|
|
|
156
156
|
throw new Error('createMilSymbol requires a browser environment');
|
|
157
157
|
}
|
|
158
158
|
}
|
|
159
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
160
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.
|
|
159
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlMilitaryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
160
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlMilitaryService });
|
|
161
161
|
}
|
|
162
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
162
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlMilitaryService, decorators: [{
|
|
163
163
|
type: Injectable
|
|
164
164
|
}], ctorParameters: () => [] });
|
|
165
165
|
|
|
@@ -329,10 +329,10 @@ class OlTacticalGraphicsService {
|
|
|
329
329
|
const b = parseInt(hex.slice(5, 7), 16);
|
|
330
330
|
return `rgba(${r}, ${g}, ${b}, ${alpha})`;
|
|
331
331
|
}
|
|
332
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
333
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.
|
|
332
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlTacticalGraphicsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
333
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlTacticalGraphicsService });
|
|
334
334
|
}
|
|
335
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
335
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlTacticalGraphicsService, decorators: [{
|
|
336
336
|
type: Injectable
|
|
337
337
|
}] });
|
|
338
338
|
|
|
@@ -112,8 +112,8 @@ class OlPopupComponent {
|
|
|
112
112
|
this.overlay = null;
|
|
113
113
|
this.currentMap = null;
|
|
114
114
|
}
|
|
115
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
116
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.
|
|
115
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlPopupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
116
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.2", type: OlPopupComponent, isStandalone: true, selector: "ol-popup", inputs: { position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, offset: { classPropertyName: "offset", publicName: "offset", isSignal: true, isRequired: false, transformFunction: null }, positioning: { classPropertyName: "positioning", publicName: "positioning", isSignal: true, isRequired: false, transformFunction: null }, autoPan: { classPropertyName: "autoPan", publicName: "autoPan", isSignal: true, isRequired: false, transformFunction: null }, closeButton: { classPropertyName: "closeButton", publicName: "closeButton", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed" }, host: { attributes: { "role": "dialog" } }, ngImport: i0, template: `
|
|
117
117
|
@if (closeButton()) {
|
|
118
118
|
<button type="button" class="ol-popup-close" aria-label="Close" (click)="onCloseClick()">
|
|
119
119
|
×
|
|
@@ -122,7 +122,7 @@ class OlPopupComponent {
|
|
|
122
122
|
<ng-content />
|
|
123
123
|
`, isInline: true, styles: [":host{display:block;position:relative}.ol-popup-close{position:absolute;top:4px;right:4px;width:20px;height:20px;padding:0;border:none;background:transparent;font-size:16px;line-height:1;cursor:pointer;color:inherit}\n"] });
|
|
124
124
|
}
|
|
125
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
125
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlPopupComponent, decorators: [{
|
|
126
126
|
type: Component,
|
|
127
127
|
args: [{ selector: 'ol-popup', template: `
|
|
128
128
|
@if (closeButton()) {
|
|
@@ -260,10 +260,10 @@ class OlTooltipDirective {
|
|
|
260
260
|
this.listener = null;
|
|
261
261
|
this.currentMap = null;
|
|
262
262
|
}
|
|
263
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
264
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.
|
|
263
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlTooltipDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
264
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.2", type: OlTooltipDirective, isStandalone: true, selector: "[olTooltip]", inputs: { olTooltip: { classPropertyName: "olTooltip", publicName: "olTooltip", isSignal: true, isRequired: true, transformFunction: null }, olTooltipLayer: { classPropertyName: "olTooltipLayer", publicName: "olTooltipLayer", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
|
|
265
265
|
}
|
|
266
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
266
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlTooltipDirective, decorators: [{
|
|
267
267
|
type: Directive,
|
|
268
268
|
args: [{
|
|
269
269
|
selector: '[olTooltip]',
|
|
@@ -441,10 +441,10 @@ class OlPopupService {
|
|
|
441
441
|
this.popups.set(id, { id, overlay, componentRef: ref, dispose });
|
|
442
442
|
});
|
|
443
443
|
}
|
|
444
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
445
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.
|
|
444
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlPopupService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
445
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlPopupService });
|
|
446
446
|
}
|
|
447
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
447
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: OlPopupService, decorators: [{
|
|
448
448
|
type: Injectable
|
|
449
449
|
}], ctorParameters: () => [] });
|
|
450
450
|
// -----------------------------------------------------------------------------
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@angular-helpers/openlayers",
|
|
3
|
-
"version": "22.0
|
|
3
|
+
"version": "22.2.0",
|
|
4
4
|
"description": "Modern Angular wrapper for OpenLayers with modular architecture, standalone components, and hybrid template/programmatic API",
|
|
5
5
|
"homepage": "https://gaspar1992.github.io/angular-helpers/docs/openlayers",
|
|
6
6
|
"repository": {
|
|
@@ -218,8 +218,8 @@ declare class OlGeolocationControlComponent {
|
|
|
218
218
|
}
|
|
219
219
|
|
|
220
220
|
declare class OlControlService {
|
|
221
|
-
addCustomControl(
|
|
222
|
-
removeCustomControl(
|
|
221
|
+
addCustomControl(_element: HTMLElement, _position: ControlPosition): void;
|
|
222
|
+
removeCustomControl(_element: HTMLElement): void;
|
|
223
223
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<OlControlService, never>;
|
|
224
224
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<OlControlService>;
|
|
225
225
|
}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
+
import * as _angular_helpers_openlayers_core from '@angular-helpers/openlayers/core';
|
|
2
|
+
import { Feature, OlFeature } from '@angular-helpers/openlayers/core';
|
|
1
3
|
import * as rxjs from 'rxjs';
|
|
2
4
|
import * as _angular_helpers_openlayers_interactions from '@angular-helpers/openlayers/interactions';
|
|
3
5
|
import * as _angular_core from '@angular/core';
|
|
4
6
|
import { Provider } from '@angular/core';
|
|
5
|
-
import { Feature, OlFeature } from '@angular-helpers/openlayers/core';
|
|
6
7
|
import Interaction from 'ol/interaction/Interaction';
|
|
7
8
|
import OLMap from 'ol/Map';
|
|
8
9
|
|
|
@@ -41,6 +42,11 @@ interface SelectEvent {
|
|
|
41
42
|
selected: Feature[];
|
|
42
43
|
deselected: Feature[];
|
|
43
44
|
}
|
|
45
|
+
interface SelectHoverEvent {
|
|
46
|
+
interactionId: string;
|
|
47
|
+
hoveredId: string | null;
|
|
48
|
+
feature: Feature | null;
|
|
49
|
+
}
|
|
44
50
|
interface DrawEndEvent {
|
|
45
51
|
interactionId: string;
|
|
46
52
|
feature: Feature;
|
|
@@ -86,8 +92,8 @@ declare class OlInteractionService {
|
|
|
86
92
|
private selectService;
|
|
87
93
|
private drawService;
|
|
88
94
|
private modifyService;
|
|
89
|
-
readonly selectedFeatures: _angular_core.Signal<Feature[]>;
|
|
90
|
-
readonly hoveredFeature: _angular_core.Signal<Feature | null>;
|
|
95
|
+
readonly selectedFeatures: _angular_core.Signal<_angular_helpers_openlayers_core.Feature[]>;
|
|
96
|
+
readonly hoveredFeature: _angular_core.Signal<_angular_helpers_openlayers_core.Feature | null>;
|
|
91
97
|
readonly selectionCount: _angular_core.Signal<number>;
|
|
92
98
|
readonly hasSelection: _angular_core.Signal<boolean>;
|
|
93
99
|
readonly activeInteractions: _angular_core.Signal<_angular_helpers_openlayers_interactions.ManagedInteraction[]>;
|
|
@@ -95,6 +101,7 @@ declare class OlInteractionService {
|
|
|
95
101
|
readonly drawEnd$: rxjs.Observable<_angular_helpers_openlayers_interactions.DrawEndEvent>;
|
|
96
102
|
readonly modify$: rxjs.Observable<_angular_helpers_openlayers_interactions.ModifyEvent>;
|
|
97
103
|
readonly select$: rxjs.Observable<_angular_helpers_openlayers_interactions.SelectEvent>;
|
|
104
|
+
readonly hover$: rxjs.Observable<SelectHoverEvent>;
|
|
98
105
|
/**
|
|
99
106
|
* Enable a select interaction on the map.
|
|
100
107
|
* @param id - Unique identifier for this interaction
|
|
@@ -182,6 +189,7 @@ declare class InteractionStateService {
|
|
|
182
189
|
private drawEndSubject;
|
|
183
190
|
private modifySubject;
|
|
184
191
|
private selectSubject;
|
|
192
|
+
private hoverSubject;
|
|
185
193
|
readonly selectedFeatures: _angular_core.Signal<Feature[]>;
|
|
186
194
|
readonly hoveredFeature: _angular_core.Signal<Feature | null>;
|
|
187
195
|
readonly selectionCount: _angular_core.Signal<number>;
|
|
@@ -191,6 +199,7 @@ declare class InteractionStateService {
|
|
|
191
199
|
readonly drawEnd$: rxjs.Observable<DrawEndEvent>;
|
|
192
200
|
readonly modify$: rxjs.Observable<ModifyEvent>;
|
|
193
201
|
readonly select$: rxjs.Observable<SelectEvent>;
|
|
202
|
+
readonly hover$: rxjs.Observable<SelectHoverEvent>;
|
|
194
203
|
/**
|
|
195
204
|
* Adds a managed interaction to the state.
|
|
196
205
|
* If the interaction is marked as exclusive, it disables other exclusive interactions.
|
|
@@ -247,6 +256,11 @@ declare class InteractionStateService {
|
|
|
247
256
|
* @param event - The select event data
|
|
248
257
|
*/
|
|
249
258
|
emitSelect(event: SelectEvent): void;
|
|
259
|
+
/**
|
|
260
|
+
* Emits a hover event.
|
|
261
|
+
* @param event - The hover event data
|
|
262
|
+
*/
|
|
263
|
+
emitHover(event: SelectHoverEvent): void;
|
|
250
264
|
/**
|
|
251
265
|
* Gets the current interaction state summary.
|
|
252
266
|
* @returns Array of interaction state objects
|
|
@@ -398,9 +412,10 @@ declare class OlSelectInteractionComponent {
|
|
|
398
412
|
active: _angular_core.InputSignal<boolean>;
|
|
399
413
|
private selectFiltered$;
|
|
400
414
|
selectEvent: _angular_core.OutputRef<_angular_helpers_openlayers_interactions.SelectEvent>;
|
|
415
|
+
hoverEvent: _angular_core.OutputEmitterRef<SelectHoverEvent>;
|
|
401
416
|
constructor();
|
|
402
417
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<OlSelectInteractionComponent, never>;
|
|
403
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<OlSelectInteractionComponent, "ol-select-interaction", never, { "id": { "alias": "id"; "required": true; "isSignal": true; }; "layers": { "alias": "layers"; "required": false; "isSignal": true; }; "multi": { "alias": "multi"; "required": false; "isSignal": true; }; "hitTolerance": { "alias": "hitTolerance"; "required": false; "isSignal": true; }; "condition": { "alias": "condition"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; }, { "selectEvent": "selectEvent"; }, never, never, true, never>;
|
|
418
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<OlSelectInteractionComponent, "ol-select-interaction", never, { "id": { "alias": "id"; "required": true; "isSignal": true; }; "layers": { "alias": "layers"; "required": false; "isSignal": true; }; "multi": { "alias": "multi"; "required": false; "isSignal": true; }; "hitTolerance": { "alias": "hitTolerance"; "required": false; "isSignal": true; }; "condition": { "alias": "condition"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; }, { "selectEvent": "selectEvent"; "hoverEvent": "hoverEvent"; }, never, never, true, never>;
|
|
404
419
|
}
|
|
405
420
|
|
|
406
421
|
/**
|
|
@@ -241,10 +241,17 @@ declare class OlWebGLTileLayerComponent {
|
|
|
241
241
|
visible: _angular_core.InputSignal<boolean>;
|
|
242
242
|
/** Preload low-res tiles up to this many zoom levels */
|
|
243
243
|
preload: _angular_core.InputSignal<number>;
|
|
244
|
+
/** Style variables for dynamic expressions (e.g. `['var', 'brightness']`) */
|
|
245
|
+
variables: _angular_core.InputSignal<Record<string, string | number | boolean | number[]> | undefined>;
|
|
244
246
|
private layer;
|
|
245
247
|
constructor();
|
|
248
|
+
/**
|
|
249
|
+
* Imperatively update style variables without triggering Angular change detection.
|
|
250
|
+
* Ideal for 60FPS animations where you don't want to use the declarative [variables] input.
|
|
251
|
+
*/
|
|
252
|
+
updateVariables(vars: Record<string, string | number | boolean | number[]>): void;
|
|
246
253
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<OlWebGLTileLayerComponent, never>;
|
|
247
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<OlWebGLTileLayerComponent, "ol-webgl-tile-layer", never, { "id": { "alias": "id"; "required": true; "isSignal": true; }; "source": { "alias": "source"; "required": true; "isSignal": true; }; "url": { "alias": "url"; "required": false; "isSignal": true; }; "attributions": { "alias": "attributions"; "required": false; "isSignal": true; }; "tileStyle": { "alias": "tileStyle"; "required": false; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "opacity": { "alias": "opacity"; "required": false; "isSignal": true; }; "visible": { "alias": "visible"; "required": false; "isSignal": true; }; "preload": { "alias": "preload"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
254
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<OlWebGLTileLayerComponent, "ol-webgl-tile-layer", never, { "id": { "alias": "id"; "required": true; "isSignal": true; }; "source": { "alias": "source"; "required": true; "isSignal": true; }; "url": { "alias": "url"; "required": false; "isSignal": true; }; "attributions": { "alias": "attributions"; "required": false; "isSignal": true; }; "tileStyle": { "alias": "tileStyle"; "required": false; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "opacity": { "alias": "opacity"; "required": false; "isSignal": true; }; "visible": { "alias": "visible"; "required": false; "isSignal": true; }; "preload": { "alias": "preload"; "required": false; "isSignal": true; }; "variables": { "alias": "variables"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
248
255
|
}
|
|
249
256
|
|
|
250
257
|
interface LayerInfo {
|