@progress/kendo-angular-map 21.4.1 → 22.0.0-develop.1
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/common/collection-item.component.d.ts +1 -1
- package/common/collection.component.d.ts +1 -1
- package/common/settings.component.d.ts +1 -1
- package/events/base-event.d.ts +1 -1
- package/events/preventable-event.d.ts +1 -1
- package/fesm2022/progress-kendo-angular-map.mjs +80 -80
- package/map/layer.component.d.ts +1 -1
- package/package.json +11 -19
- package/schematics/ngAdd/index.js +1 -1
- package/tooltip/base-tooltip.d.ts +1 -1
- package/esm2022/common/collection-item.component.mjs +0 -64
- package/esm2022/common/collection.component.mjs +0 -66
- package/esm2022/common/collection.service.mjs +0 -37
- package/esm2022/common/configuration.service.mjs +0 -62
- package/esm2022/common/copy-changes.mjs +0 -21
- package/esm2022/common/has-parent.mjs +0 -14
- package/esm2022/common/map-instance-observer.mjs +0 -21
- package/esm2022/common/settings.component.mjs +0 -61
- package/esm2022/common/to-simple-changes.mjs +0 -18
- package/esm2022/directives.mjs +0 -28
- package/esm2022/events/base-event.mjs +0 -26
- package/esm2022/events/before-reset-event.mjs +0 -17
- package/esm2022/events/instance-event.service.mjs +0 -32
- package/esm2022/events/map-click-event.mjs +0 -27
- package/esm2022/events/marker-activate-event.mjs +0 -27
- package/esm2022/events/marker-click-event.mjs +0 -27
- package/esm2022/events/marker-created-event.mjs +0 -29
- package/esm2022/events/pan-end-event.mjs +0 -32
- package/esm2022/events/pan-event.mjs +0 -32
- package/esm2022/events/preventable-event.mjs +0 -36
- package/esm2022/events/reset-event.mjs +0 -19
- package/esm2022/events/shape-click-event.mjs +0 -32
- package/esm2022/events/shape-created-event.mjs +0 -37
- package/esm2022/events/shape-feature-created-event.mjs +0 -37
- package/esm2022/events/shape-mouse-enter-event.mjs +0 -35
- package/esm2022/events/shape-mouse-leave-event.mjs +0 -35
- package/esm2022/events/zoom-end-event.mjs +0 -22
- package/esm2022/events/zoom-start-event.mjs +0 -23
- package/esm2022/events.mjs +0 -19
- package/esm2022/index.mjs +0 -17
- package/esm2022/map/bubble-layer.component.mjs +0 -126
- package/esm2022/map/layer/tooltip.component.mjs +0 -39
- package/esm2022/map/layer.component.mjs +0 -89
- package/esm2022/map/layers.component.mjs +0 -57
- package/esm2022/map/marker-layer.component.mjs +0 -102
- package/esm2022/map/shape-layer.component.mjs +0 -85
- package/esm2022/map/tile-layer.component.mjs +0 -91
- package/esm2022/map.component.mjs +0 -694
- package/esm2022/map.module.mjs +0 -55
- package/esm2022/package-metadata.mjs +0 -16
- package/esm2022/progress-kendo-angular-map.mjs +0 -8
- package/esm2022/tooltip/base-tooltip.mjs +0 -102
- package/esm2022/tooltip/body-factory.mjs +0 -14
- package/esm2022/tooltip/bubble-tooltip-template.directive.mjs +0 -55
- package/esm2022/tooltip/bubble-tooltip.component.mjs +0 -68
- package/esm2022/tooltip/marker-tooltip-template.directive.mjs +0 -54
- package/esm2022/tooltip/marker-tooltip.component.mjs +0 -68
- package/esm2022/tooltip/popup-settings.interface.mjs +0 -5
- package/esm2022/tooltip/shape-tooltip-template.directive.mjs +0 -54
- package/esm2022/tooltip/shape-tooltip.component.mjs +0 -68
- package/esm2022/tooltip/tooltip-popup.component.mjs +0 -120
- package/esm2022/tooltip/tooltip-template.service.mjs +0 -27
- package/esm2022/tooltip.mjs +0 -11
|
@@ -1,694 +0,0 @@
|
|
|
1
|
-
/**-----------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright © 2026 Progress Software Corporation. All rights reserved.
|
|
3
|
-
* Licensed under commercial license. See LICENSE.md in the project root for more information
|
|
4
|
-
*-------------------------------------------------------------------------------------------*/
|
|
5
|
-
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, NgZone, Output, Renderer2, ViewChild } from '@angular/core';
|
|
6
|
-
import { hasObservers, isDocumentAvailable } from '@progress/kendo-angular-common';
|
|
7
|
-
import { L10N_PREFIX, LocalizationService } from '@progress/kendo-angular-l10n';
|
|
8
|
-
import { IconsService } from '@progress/kendo-angular-icons';
|
|
9
|
-
import { mapMarkerTargetIcon, mapMarkerIcon, plusIcon, minusIcon, caretAltUpIcon, caretAltDownIcon, caretAltLeftIcon, caretAltRightIcon } from '@progress/kendo-svg-icons';
|
|
10
|
-
import { Map } from '@progress/kendo-charts';
|
|
11
|
-
import { validatePackage } from '@progress/kendo-licensing';
|
|
12
|
-
import { ResizeSensorComponent } from '@progress/kendo-angular-common';
|
|
13
|
-
import { combineLatest } from 'rxjs';
|
|
14
|
-
import { tap } from 'rxjs/operators';
|
|
15
|
-
import { ConfigurationService } from './common/configuration.service';
|
|
16
|
-
import { copyChanges } from './common/copy-changes';
|
|
17
|
-
import { hasParent } from './common/has-parent';
|
|
18
|
-
import { MapInstanceObserver } from './common/map-instance-observer';
|
|
19
|
-
import { InstanceEventService } from './events/instance-event.service';
|
|
20
|
-
import { packageMetadata } from './package-metadata';
|
|
21
|
-
import { TooltipPopupComponent } from './tooltip/tooltip-popup.component';
|
|
22
|
-
import { TooltipTemplateService } from './tooltip/tooltip-template.service';
|
|
23
|
-
import * as i0 from "@angular/core";
|
|
24
|
-
import * as i1 from "./common/configuration.service";
|
|
25
|
-
import * as i2 from "./events/instance-event.service";
|
|
26
|
-
import * as i3 from "@progress/kendo-angular-l10n";
|
|
27
|
-
import * as i4 from "@progress/kendo-angular-icons";
|
|
28
|
-
// Static SVG Icons used by the Map
|
|
29
|
-
const svgIcons = {
|
|
30
|
-
mapMarkerTargetIcon,
|
|
31
|
-
mapMarkerIcon,
|
|
32
|
-
plusIcon,
|
|
33
|
-
minusIcon,
|
|
34
|
-
caretAltUpIcon,
|
|
35
|
-
caretAltDownIcon,
|
|
36
|
-
caretAltLeftIcon,
|
|
37
|
-
caretAltRightIcon
|
|
38
|
-
};
|
|
39
|
-
/**
|
|
40
|
-
* Represents the [Kendo UI Map component for Angular]({% slug overview_map %}).
|
|
41
|
-
*
|
|
42
|
-
* Use this component to display interactive maps with markers, layers, and controls.
|
|
43
|
-
* Configure zoom levels, center coordinates, and user interactions like panning and zooming.
|
|
44
|
-
*
|
|
45
|
-
* @example
|
|
46
|
-
* ```ts
|
|
47
|
-
* import { Component } from '@angular/core';
|
|
48
|
-
*
|
|
49
|
-
* @Component({
|
|
50
|
-
* selector: 'my-app',
|
|
51
|
-
* template: `
|
|
52
|
-
* <kendo-map [center]="center" [zoom]="15">
|
|
53
|
-
* <kendo-map-layers>
|
|
54
|
-
* <kendo-map-tile-layer
|
|
55
|
-
* [subdomains]="tileSubdomains"
|
|
56
|
-
* [urlTemplate]="tileUrl"
|
|
57
|
-
* attribution="© <a href='https://osm.org/copyright'>OpenStreetMap contributors</a>"
|
|
58
|
-
* >
|
|
59
|
-
* </kendo-map-tile-layer>
|
|
60
|
-
* <kendo-map-marker-layer
|
|
61
|
-
* [data]="markers"
|
|
62
|
-
* locationField="latlng"
|
|
63
|
-
* titleField="name"
|
|
64
|
-
* >
|
|
65
|
-
* </kendo-map-marker-layer>
|
|
66
|
-
* </kendo-map-layers>
|
|
67
|
-
* </kendo-map>
|
|
68
|
-
* `
|
|
69
|
-
* })
|
|
70
|
-
* class AppComponent {
|
|
71
|
-
* tileSubdomains = ["a", "b", "c"];
|
|
72
|
-
* tileUrl = (e: TileUrlTemplateArgs): string =>
|
|
73
|
-
* `https://${e.subdomain}.tile.openstreetmap.org/${e.zoom}/${e.x}/${e.y}.png`;
|
|
74
|
-
*
|
|
75
|
-
* center = [30.2675, -97.7409];
|
|
76
|
-
* markers = [{ latlng: [30.2675, -97.7409], name: "Zevo Toys" }];
|
|
77
|
-
* }
|
|
78
|
-
* ```
|
|
79
|
-
*
|
|
80
|
-
* @remarks
|
|
81
|
-
* Supported children components are: {@link LayersComponent}.
|
|
82
|
-
*/
|
|
83
|
-
export class MapComponent {
|
|
84
|
-
configurationService;
|
|
85
|
-
instanceEventService;
|
|
86
|
-
element;
|
|
87
|
-
localizationService;
|
|
88
|
-
changeDetector;
|
|
89
|
-
ngZone;
|
|
90
|
-
renderer;
|
|
91
|
-
iconsService;
|
|
92
|
-
/**
|
|
93
|
-
* Limits the automatic resizing of the Map. Sets the maximum number of times per second
|
|
94
|
-
* that the component redraws its content when the size of its container changes.
|
|
95
|
-
* To disable the automatic resizing, set it to `0`.
|
|
96
|
-
*
|
|
97
|
-
* @default 10
|
|
98
|
-
*
|
|
99
|
-
* @example
|
|
100
|
-
* ```ts
|
|
101
|
-
* @Component({
|
|
102
|
-
* selector: 'my-app',
|
|
103
|
-
* template: `
|
|
104
|
-
* <kendo-map [resizeRateLimit]="2">
|
|
105
|
-
* </kendo-map>
|
|
106
|
-
* `
|
|
107
|
-
* })
|
|
108
|
-
* export class AppComponent {
|
|
109
|
-
* }
|
|
110
|
-
* ```
|
|
111
|
-
*/
|
|
112
|
-
resizeRateLimit = 10;
|
|
113
|
-
/**
|
|
114
|
-
* Specifies the map center coordinates.
|
|
115
|
-
* Provide coordinates as `[Latitude, Longitude]`.
|
|
116
|
-
*/
|
|
117
|
-
center;
|
|
118
|
-
/**
|
|
119
|
-
* Specifies the configuration for built-in map controls.
|
|
120
|
-
*/
|
|
121
|
-
controls;
|
|
122
|
-
/**
|
|
123
|
-
* The minimum zoom level. Typical web maps use zoom levels from 0 (whole world) to 19 (sub-meter features).
|
|
124
|
-
*
|
|
125
|
-
* @default 1
|
|
126
|
-
*/
|
|
127
|
-
minZoom;
|
|
128
|
-
/**
|
|
129
|
-
* The maximum zoom level. Typical web maps use zoom levels from 0 (whole world) to 19 (sub-meter features).
|
|
130
|
-
*
|
|
131
|
-
* @default 19
|
|
132
|
-
*/
|
|
133
|
-
maxZoom;
|
|
134
|
-
/**
|
|
135
|
-
* The size of the map in pixels at zoom level 0.
|
|
136
|
-
*
|
|
137
|
-
* @default 256
|
|
138
|
-
*/
|
|
139
|
-
minSize;
|
|
140
|
-
/**
|
|
141
|
-
* Controls whether the user can pan the map.
|
|
142
|
-
*
|
|
143
|
-
* @default true
|
|
144
|
-
*/
|
|
145
|
-
pannable;
|
|
146
|
-
/**
|
|
147
|
-
* The settings for the tooltip popup.
|
|
148
|
-
*/
|
|
149
|
-
popupSettings;
|
|
150
|
-
/**
|
|
151
|
-
* Specifies whether the map should wrap around the east-west edges.
|
|
152
|
-
*
|
|
153
|
-
* @default true
|
|
154
|
-
*/
|
|
155
|
-
wraparound;
|
|
156
|
-
/**
|
|
157
|
-
* Specifies the initial zoom level.
|
|
158
|
-
* Use values from 0 (whole world) to 19 (sub-meter features).
|
|
159
|
-
* The map size derives from the zoom level and `minScale` options: `size = (2 ^ zoom) * minSize`.
|
|
160
|
-
* Map zoom rounds floating point numbers to use whole [`zoom levels`](https://wiki.openstreetmap.org/wiki/Zoom_levels) 0 through 19.
|
|
161
|
-
*
|
|
162
|
-
* @default 3
|
|
163
|
-
*/
|
|
164
|
-
zoom = 3;
|
|
165
|
-
/**
|
|
166
|
-
* Determines whether users can change the map zoom level.
|
|
167
|
-
*
|
|
168
|
-
* @default true
|
|
169
|
-
*/
|
|
170
|
-
zoomable;
|
|
171
|
-
/**
|
|
172
|
-
* Fires immediately before the map resets. This event is typically used for cleanup by layer implementers.
|
|
173
|
-
*/
|
|
174
|
-
beforeReset = new EventEmitter();
|
|
175
|
-
/**
|
|
176
|
-
* Fires when the user clicks on the map.
|
|
177
|
-
*/
|
|
178
|
-
mapClick = new EventEmitter();
|
|
179
|
-
/**
|
|
180
|
-
* Fires when a marker appears on the map and its DOM element becomes available.
|
|
181
|
-
*/
|
|
182
|
-
markerActivate = new EventEmitter();
|
|
183
|
-
/**
|
|
184
|
-
* Fires when the user clicks or taps a marker.
|
|
185
|
-
*/
|
|
186
|
-
markerClick = new EventEmitter();
|
|
187
|
-
/**
|
|
188
|
-
* Fires once the map has created a marker, and just before the map displays it.
|
|
189
|
-
*
|
|
190
|
-
* Cancelling the event prevents displaying the marker.
|
|
191
|
-
*/
|
|
192
|
-
markerCreated = new EventEmitter();
|
|
193
|
-
/**
|
|
194
|
-
* Fires after the map viewport completes panning.
|
|
195
|
-
*/
|
|
196
|
-
panEnd = new EventEmitter();
|
|
197
|
-
/**
|
|
198
|
-
* Fires while the map viewport is being moved.
|
|
199
|
-
*/
|
|
200
|
-
pan = new EventEmitter();
|
|
201
|
-
/**
|
|
202
|
-
* Fires when the map resets.
|
|
203
|
-
*
|
|
204
|
-
* This typically occurs on initial load and after a zoom/center change.
|
|
205
|
-
*/
|
|
206
|
-
reset = new EventEmitter();
|
|
207
|
-
/**
|
|
208
|
-
* Fires when a shape is clicked or tapped.
|
|
209
|
-
*/
|
|
210
|
-
shapeClick = new EventEmitter();
|
|
211
|
-
/**
|
|
212
|
-
* Fires when a shape is created, but is not rendered yet.
|
|
213
|
-
*/
|
|
214
|
-
shapeCreated = new EventEmitter();
|
|
215
|
-
/**
|
|
216
|
-
* Fires when a [GeoJSON Feature](https://geojson.org/geojson-spec.html#feature-objects) is created on a shape layer.
|
|
217
|
-
*/
|
|
218
|
-
shapeFeatureCreated = new EventEmitter();
|
|
219
|
-
/**
|
|
220
|
-
* Fires when the mouse enters a shape.
|
|
221
|
-
*
|
|
222
|
-
* > This event will fire reliably only for shapes that have set fill color.
|
|
223
|
-
* > The opacity can still be set to 0 so the shapes appear to have no fill.
|
|
224
|
-
*/
|
|
225
|
-
shapeMouseEnter = new EventEmitter();
|
|
226
|
-
/**
|
|
227
|
-
* Fires when the mouse leaves a shape.
|
|
228
|
-
*
|
|
229
|
-
* > This event will fire reliably only for shapes that have set fill color.
|
|
230
|
-
* > The opacity can still be set to 0 so the shapes appear to have no fill.
|
|
231
|
-
*/
|
|
232
|
-
shapeMouseLeave = new EventEmitter();
|
|
233
|
-
/**
|
|
234
|
-
* Fires when the map zoom level is about to change.
|
|
235
|
-
*
|
|
236
|
-
* Cancelling the event will prevent the user action.
|
|
237
|
-
*/
|
|
238
|
-
zoomStart = new EventEmitter();
|
|
239
|
-
/**
|
|
240
|
-
* Fires when the map zoom level changes.
|
|
241
|
-
*/
|
|
242
|
-
zoomEnd = new EventEmitter();
|
|
243
|
-
/**
|
|
244
|
-
* Fires when the map center has been changed.
|
|
245
|
-
*/
|
|
246
|
-
centerChange = new EventEmitter();
|
|
247
|
-
/**
|
|
248
|
-
* Fires when the map zoom level has been changed.
|
|
249
|
-
*/
|
|
250
|
-
zoomChange = new EventEmitter();
|
|
251
|
-
tooltipInstance;
|
|
252
|
-
instance;
|
|
253
|
-
initResizeSensor = false;
|
|
254
|
-
options;
|
|
255
|
-
theme = null;
|
|
256
|
-
resizeTimeout;
|
|
257
|
-
redrawTimeout;
|
|
258
|
-
destroyed;
|
|
259
|
-
rtl = false;
|
|
260
|
-
subscriptions;
|
|
261
|
-
optionsChange;
|
|
262
|
-
domSubscriptions;
|
|
263
|
-
iconSettings;
|
|
264
|
-
constructor(configurationService, instanceEventService, element, localizationService, changeDetector, ngZone, renderer, iconsService) {
|
|
265
|
-
this.configurationService = configurationService;
|
|
266
|
-
this.instanceEventService = instanceEventService;
|
|
267
|
-
this.element = element;
|
|
268
|
-
this.localizationService = localizationService;
|
|
269
|
-
this.changeDetector = changeDetector;
|
|
270
|
-
this.ngZone = ngZone;
|
|
271
|
-
this.renderer = renderer;
|
|
272
|
-
this.iconsService = iconsService;
|
|
273
|
-
validatePackage(packageMetadata);
|
|
274
|
-
}
|
|
275
|
-
ngAfterViewInit() {
|
|
276
|
-
if (this.canRender) {
|
|
277
|
-
this.ngZone.runOutsideAngular(() => {
|
|
278
|
-
const mapMouseleave = this.renderer.listen(this.element.nativeElement, 'mouseleave', this.mapMouseleave.bind(this));
|
|
279
|
-
this.domSubscriptions = () => {
|
|
280
|
-
mapMouseleave();
|
|
281
|
-
};
|
|
282
|
-
});
|
|
283
|
-
}
|
|
284
|
-
this.setDirection();
|
|
285
|
-
this.initConfig();
|
|
286
|
-
this.subscriptions = this.localizationService.changes.subscribe(() => this.setDirection());
|
|
287
|
-
}
|
|
288
|
-
ngAfterViewChecked() {
|
|
289
|
-
if (this.instance && this.autoResize) {
|
|
290
|
-
this.ngZone.runOutsideAngular(() => {
|
|
291
|
-
clearTimeout(this.resizeTimeout);
|
|
292
|
-
this.resizeTimeout = setTimeout(() => {
|
|
293
|
-
this.resize();
|
|
294
|
-
}, 0);
|
|
295
|
-
});
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
ngOnChanges(changes) {
|
|
299
|
-
if (this.instance) {
|
|
300
|
-
if (changes['zoom']) {
|
|
301
|
-
this.instance.zoom(changes['zoom'].currentValue);
|
|
302
|
-
delete changes['zoom'];
|
|
303
|
-
}
|
|
304
|
-
if (changes['center']) {
|
|
305
|
-
this.instance.center(changes['center'].currentValue);
|
|
306
|
-
delete changes['center'];
|
|
307
|
-
}
|
|
308
|
-
if (Object.keys(changes).length === 0) {
|
|
309
|
-
return;
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
const store = this.configurationService.store;
|
|
313
|
-
copyChanges(changes, store);
|
|
314
|
-
store.popupSettings = null;
|
|
315
|
-
this.configurationService.push(store);
|
|
316
|
-
}
|
|
317
|
-
ngOnDestroy() {
|
|
318
|
-
this.destroyed = true;
|
|
319
|
-
if (this.optionsChange) {
|
|
320
|
-
this.optionsChange.unsubscribe();
|
|
321
|
-
}
|
|
322
|
-
if (this.domSubscriptions) {
|
|
323
|
-
this.domSubscriptions();
|
|
324
|
-
this.domSubscriptions = null;
|
|
325
|
-
}
|
|
326
|
-
if (this.instance) {
|
|
327
|
-
this.instance.destroy();
|
|
328
|
-
this.instance = null;
|
|
329
|
-
}
|
|
330
|
-
if (this.subscriptions) {
|
|
331
|
-
this.subscriptions.unsubscribe();
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
/**
|
|
335
|
-
* Gets the marker layers instances.
|
|
336
|
-
*/
|
|
337
|
-
get layers() {
|
|
338
|
-
return this.instance?.layers;
|
|
339
|
-
}
|
|
340
|
-
/**
|
|
341
|
-
* Gets the extent (visible area) of the map.
|
|
342
|
-
*/
|
|
343
|
-
get extent() {
|
|
344
|
-
return this.instance?.extent();
|
|
345
|
-
}
|
|
346
|
-
/**
|
|
347
|
-
* Sets the extent (visible area) of the map.
|
|
348
|
-
*/
|
|
349
|
-
set extent(extent) {
|
|
350
|
-
this.instance?.extent(extent);
|
|
351
|
-
}
|
|
352
|
-
/**
|
|
353
|
-
* Detects the container size and redraws the Map.
|
|
354
|
-
* Resizing happens automatically unless you set `resizeRateLimit` to `0`.
|
|
355
|
-
*/
|
|
356
|
-
resize() {
|
|
357
|
-
//this.instance?.resize();
|
|
358
|
-
}
|
|
359
|
-
/**
|
|
360
|
-
* Gets the size of the visible map area.
|
|
361
|
-
*
|
|
362
|
-
* @returns {Object} The width and height of the visible map area.
|
|
363
|
-
*/
|
|
364
|
-
viewSize() {
|
|
365
|
-
return this.instance?.viewSize();
|
|
366
|
-
}
|
|
367
|
-
/**
|
|
368
|
-
* Gets event coordinates relative to the map element.
|
|
369
|
-
* Offset coordinates do not sync to a specific map location.
|
|
370
|
-
*
|
|
371
|
-
* @param {any} e The mouse event.
|
|
372
|
-
* @returns {geometry.Point} The event coordinates relative to the map element.
|
|
373
|
-
*/
|
|
374
|
-
eventOffset(e) {
|
|
375
|
-
return this.instance?.eventOffset(e);
|
|
376
|
-
}
|
|
377
|
-
/**
|
|
378
|
-
* Gets projected layer coordinates for this mouse event.
|
|
379
|
-
* Layer coordinates are absolute and change only when zoom level changes.
|
|
380
|
-
*
|
|
381
|
-
* @param {any} e The mouse event.
|
|
382
|
-
* @returns {geometry.Point} The projected layer coordinates for this event.
|
|
383
|
-
*/
|
|
384
|
-
eventToLayer(e) {
|
|
385
|
-
return this.instance?.eventToLayer(e);
|
|
386
|
-
}
|
|
387
|
-
/**
|
|
388
|
-
* Gets the geographic location for this mouse event.
|
|
389
|
-
*
|
|
390
|
-
* @param {any} e The mouse event.
|
|
391
|
-
* @returns {geometry.Point} The geographic location for this mouse event.
|
|
392
|
-
*/
|
|
393
|
-
eventToLocation(e) {
|
|
394
|
-
return this.instance?.eventToLocation(e);
|
|
395
|
-
}
|
|
396
|
-
/**
|
|
397
|
-
* Gets relative view coordinates for this mouse event.
|
|
398
|
-
* Layer elements positioned on these coordinates appear under the mouse cursor.
|
|
399
|
-
* View coordinates become invalid after a map reset.
|
|
400
|
-
*
|
|
401
|
-
* @param {any} e The mouse event.
|
|
402
|
-
* @returns {geometry.Point} The relative view coordinates for this mouse event.
|
|
403
|
-
*/
|
|
404
|
-
eventToView(e) {
|
|
405
|
-
return this.instance?.eventToView(e);
|
|
406
|
-
}
|
|
407
|
-
/**
|
|
408
|
-
* Converts layer coordinates to geographic location.
|
|
409
|
-
*
|
|
410
|
-
* @param {geometry.Point | number[]} point The layer coordinates. Arrays use x, y order.
|
|
411
|
-
* @param {number} zoom Optional. Zoom level to use. Defaults to current zoom level.
|
|
412
|
-
* @returns {Location} The geographic location for the layer coordinates.
|
|
413
|
-
*/
|
|
414
|
-
layerToLocation(point, zoom) {
|
|
415
|
-
return this.instance?.layerToLocation(point, zoom);
|
|
416
|
-
}
|
|
417
|
-
/**
|
|
418
|
-
* Gets layer coordinates for a geographic location.
|
|
419
|
-
*
|
|
420
|
-
* @param {Location | number[]} location The geographic location. Arrays use [Latitude, Longitude] order.
|
|
421
|
-
* @param {number} zoom Optional. Zoom level to use. Defaults to current zoom level.
|
|
422
|
-
* @returns {geometry.Point} The layer coordinates.
|
|
423
|
-
*/
|
|
424
|
-
locationToLayer(location, zoom) {
|
|
425
|
-
return this.instance?.locationToLayer(location, zoom);
|
|
426
|
-
}
|
|
427
|
-
/**
|
|
428
|
-
* Gets view coordinates for a geographic location.
|
|
429
|
-
*
|
|
430
|
-
* @param {Location | number[]} location The geographic location. Arrays use [Latitude, Longitude] order.
|
|
431
|
-
* @returns {geometry.Point} The view coordinates for the geographic location.
|
|
432
|
-
*/
|
|
433
|
-
locationToView(location) {
|
|
434
|
-
return this.instance?.locationToView(location);
|
|
435
|
-
}
|
|
436
|
-
/**
|
|
437
|
-
* Gets the geographic location for view coordinates.
|
|
438
|
-
*
|
|
439
|
-
* @param {geometry.Point | number[]} point The view coordinates. Arrays use x, y order.
|
|
440
|
-
* @param {number} zoom Optional. Zoom level to use. Defaults to current zoom level.
|
|
441
|
-
* @returns {Location} The geographic location for the view coordinates.
|
|
442
|
-
*/
|
|
443
|
-
viewToLocation(point, zoom) {
|
|
444
|
-
return this.instance?.viewToLocation(point, zoom);
|
|
445
|
-
}
|
|
446
|
-
/**
|
|
447
|
-
* @hidden
|
|
448
|
-
*/
|
|
449
|
-
onResize() {
|
|
450
|
-
if (this.autoResize) {
|
|
451
|
-
this.resize();
|
|
452
|
-
}
|
|
453
|
-
}
|
|
454
|
-
/**
|
|
455
|
-
* @hidden
|
|
456
|
-
*/
|
|
457
|
-
get canRender() {
|
|
458
|
-
return isDocumentAvailable() && Boolean(this.element);
|
|
459
|
-
}
|
|
460
|
-
get autoResize() {
|
|
461
|
-
return this.resizeRateLimit > 0;
|
|
462
|
-
}
|
|
463
|
-
init() {
|
|
464
|
-
if (!this.canRender) {
|
|
465
|
-
return;
|
|
466
|
-
}
|
|
467
|
-
const element = this.element.nativeElement;
|
|
468
|
-
this.renderer.setStyle(element, 'display', 'block');
|
|
469
|
-
const instanceObserver = new MapInstanceObserver(this);
|
|
470
|
-
this.createInstance(element, instanceObserver);
|
|
471
|
-
}
|
|
472
|
-
initConfig() {
|
|
473
|
-
if (!isDocumentAvailable()) {
|
|
474
|
-
return;
|
|
475
|
-
}
|
|
476
|
-
this.ngZone.runOutsideAngular(() => {
|
|
477
|
-
this.optionsChange = combineLatest([this.configurationService.changes, this.iconsService.changes])
|
|
478
|
-
.pipe(tap(([options, iconSettings]) => {
|
|
479
|
-
this.options = {
|
|
480
|
-
...options,
|
|
481
|
-
icons: {
|
|
482
|
-
...iconSettings,
|
|
483
|
-
svgIcons
|
|
484
|
-
}
|
|
485
|
-
};
|
|
486
|
-
}))
|
|
487
|
-
.subscribe(() => {
|
|
488
|
-
if (!this.instance) {
|
|
489
|
-
this.init();
|
|
490
|
-
return;
|
|
491
|
-
}
|
|
492
|
-
this.instance.setOptions(this.options);
|
|
493
|
-
});
|
|
494
|
-
});
|
|
495
|
-
}
|
|
496
|
-
createInstance(element, observer) {
|
|
497
|
-
this.instance = new Map(element, this.options, this.theme, {
|
|
498
|
-
observer: observer,
|
|
499
|
-
rtl: this.rtl,
|
|
500
|
-
sender: this
|
|
501
|
-
});
|
|
502
|
-
}
|
|
503
|
-
activeEmitter(name) {
|
|
504
|
-
const alias = name === 'click' ? 'mapClick' : name;
|
|
505
|
-
const emitter = this[alias];
|
|
506
|
-
if (emitter && emitter.emit && hasObservers(emitter)) {
|
|
507
|
-
return emitter;
|
|
508
|
-
}
|
|
509
|
-
}
|
|
510
|
-
trigger(name, e) {
|
|
511
|
-
const emitter = this.activeEmitter(name);
|
|
512
|
-
if (emitter) {
|
|
513
|
-
const args = this.instanceEventService.create(name, e, this);
|
|
514
|
-
if (!this.instance && e.sender) {
|
|
515
|
-
// Ensure instance reference is populated for events trigger during initialization.
|
|
516
|
-
this.instance = e.sender;
|
|
517
|
-
}
|
|
518
|
-
this.run(() => {
|
|
519
|
-
emitter.emit(args);
|
|
520
|
-
});
|
|
521
|
-
return args.isDefaultPrevented && args.isDefaultPrevented();
|
|
522
|
-
}
|
|
523
|
-
}
|
|
524
|
-
run(callback, inZone = true, detectChanges) {
|
|
525
|
-
if (inZone) {
|
|
526
|
-
if (detectChanges) {
|
|
527
|
-
this.changeDetector.markForCheck();
|
|
528
|
-
}
|
|
529
|
-
this.ngZone.run(callback);
|
|
530
|
-
}
|
|
531
|
-
else {
|
|
532
|
-
callback();
|
|
533
|
-
if (detectChanges) {
|
|
534
|
-
this.detectChanges();
|
|
535
|
-
}
|
|
536
|
-
}
|
|
537
|
-
}
|
|
538
|
-
detectChanges() {
|
|
539
|
-
if (!this.destroyed) {
|
|
540
|
-
this.changeDetector.detectChanges();
|
|
541
|
-
}
|
|
542
|
-
}
|
|
543
|
-
setDirection() {
|
|
544
|
-
this.rtl = this.isRTL;
|
|
545
|
-
if (this.element) {
|
|
546
|
-
this.renderer.setAttribute(this.element.nativeElement, 'dir', this.rtl ? 'rtl' : 'ltr');
|
|
547
|
-
}
|
|
548
|
-
}
|
|
549
|
-
get isRTL() {
|
|
550
|
-
return Boolean(this.localizationService.rtl);
|
|
551
|
-
}
|
|
552
|
-
onInit(e) {
|
|
553
|
-
this.instance = e.sender;
|
|
554
|
-
}
|
|
555
|
-
onShowTooltip(e) {
|
|
556
|
-
this.run(() => {
|
|
557
|
-
this.tooltipInstance.show(e);
|
|
558
|
-
}, true, true);
|
|
559
|
-
}
|
|
560
|
-
onHideTooltip() {
|
|
561
|
-
this.run(() => {
|
|
562
|
-
this.tooltipInstance.hide();
|
|
563
|
-
}, true, true);
|
|
564
|
-
}
|
|
565
|
-
onCenterChange(e) {
|
|
566
|
-
this.centerChange.next(e.center);
|
|
567
|
-
}
|
|
568
|
-
onZoomChange(e) {
|
|
569
|
-
this.zoomChange.next(e.zoom);
|
|
570
|
-
}
|
|
571
|
-
/**
|
|
572
|
-
* @hidden
|
|
573
|
-
*/
|
|
574
|
-
tooltipMouseleave(e) {
|
|
575
|
-
const relatedTarget = e.relatedTarget;
|
|
576
|
-
const chartElement = this.element.nativeElement;
|
|
577
|
-
if (this.instance && (!relatedTarget || !hasParent(relatedTarget, chartElement))) {
|
|
578
|
-
this.tooltipInstance.hide();
|
|
579
|
-
}
|
|
580
|
-
}
|
|
581
|
-
/**
|
|
582
|
-
* @hidden
|
|
583
|
-
*/
|
|
584
|
-
mapMouseleave(e) {
|
|
585
|
-
const relatedTarget = e.relatedTarget;
|
|
586
|
-
const chartElement = this.element.nativeElement;
|
|
587
|
-
if (this.instance && (!relatedTarget || !(this.tooltipInstance.containsElement(relatedTarget) || hasParent(relatedTarget, chartElement)))) {
|
|
588
|
-
this.tooltipInstance.hide();
|
|
589
|
-
}
|
|
590
|
-
}
|
|
591
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MapComponent, deps: [{ token: i1.ConfigurationService }, { token: i2.InstanceEventService }, { token: i0.ElementRef }, { token: i3.LocalizationService }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i4.IconsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
592
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: MapComponent, isStandalone: true, selector: "kendo-map", inputs: { resizeRateLimit: "resizeRateLimit", center: "center", controls: "controls", minZoom: "minZoom", maxZoom: "maxZoom", minSize: "minSize", pannable: "pannable", popupSettings: "popupSettings", wraparound: "wraparound", zoom: "zoom", zoomable: "zoomable" }, outputs: { beforeReset: "beforeReset", mapClick: "mapClick", markerActivate: "markerActivate", markerClick: "markerClick", markerCreated: "markerCreated", panEnd: "panEnd", pan: "pan", reset: "reset", shapeClick: "shapeClick", shapeCreated: "shapeCreated", shapeFeatureCreated: "shapeFeatureCreated", shapeMouseEnter: "shapeMouseEnter", shapeMouseLeave: "shapeMouseLeave", zoomStart: "zoomStart", zoomEnd: "zoomEnd", centerChange: "centerChange", zoomChange: "zoomChange" }, providers: [
|
|
593
|
-
ConfigurationService,
|
|
594
|
-
InstanceEventService,
|
|
595
|
-
LocalizationService,
|
|
596
|
-
TooltipTemplateService,
|
|
597
|
-
{
|
|
598
|
-
provide: L10N_PREFIX,
|
|
599
|
-
useValue: 'kendo.map'
|
|
600
|
-
}
|
|
601
|
-
], viewQueries: [{ propertyName: "tooltipInstance", first: true, predicate: TooltipPopupComponent, descendants: true, static: true }], exportAs: ["kendoMap"], usesOnChanges: true, ngImport: i0, template: `
|
|
602
|
-
<kendo-map-tooltip-popup (leave)="tooltipMouseleave($event)" [popupSettings]="popupSettings">
|
|
603
|
-
</kendo-map-tooltip-popup>
|
|
604
|
-
<div [style.width.%]="100" [style.height.%]="100"><!-- required for resize sensor to initialize properly -->
|
|
605
|
-
<kendo-resize-sensor (resize)="onResize()" [rateLimit]="resizeRateLimit"></kendo-resize-sensor>
|
|
606
|
-
</div>
|
|
607
|
-
`, isInline: true, dependencies: [{ kind: "component", type: TooltipPopupComponent, selector: "kendo-map-tooltip-popup", inputs: ["animate", "classNames", "wrapperClass"], outputs: ["leave"] }, { kind: "component", type: ResizeSensorComponent, selector: "kendo-resize-sensor", inputs: ["rateLimit"], outputs: ["resize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
608
|
-
}
|
|
609
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MapComponent, decorators: [{
|
|
610
|
-
type: Component,
|
|
611
|
-
args: [{
|
|
612
|
-
selector: 'kendo-map',
|
|
613
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
614
|
-
exportAs: 'kendoMap',
|
|
615
|
-
providers: [
|
|
616
|
-
ConfigurationService,
|
|
617
|
-
InstanceEventService,
|
|
618
|
-
LocalizationService,
|
|
619
|
-
TooltipTemplateService,
|
|
620
|
-
{
|
|
621
|
-
provide: L10N_PREFIX,
|
|
622
|
-
useValue: 'kendo.map'
|
|
623
|
-
}
|
|
624
|
-
],
|
|
625
|
-
template: `
|
|
626
|
-
<kendo-map-tooltip-popup (leave)="tooltipMouseleave($event)" [popupSettings]="popupSettings">
|
|
627
|
-
</kendo-map-tooltip-popup>
|
|
628
|
-
<div [style.width.%]="100" [style.height.%]="100"><!-- required for resize sensor to initialize properly -->
|
|
629
|
-
<kendo-resize-sensor (resize)="onResize()" [rateLimit]="resizeRateLimit"></kendo-resize-sensor>
|
|
630
|
-
</div>
|
|
631
|
-
`,
|
|
632
|
-
standalone: true,
|
|
633
|
-
imports: [TooltipPopupComponent, ResizeSensorComponent]
|
|
634
|
-
}]
|
|
635
|
-
}], ctorParameters: () => [{ type: i1.ConfigurationService }, { type: i2.InstanceEventService }, { type: i0.ElementRef }, { type: i3.LocalizationService }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i4.IconsService }], propDecorators: { resizeRateLimit: [{
|
|
636
|
-
type: Input
|
|
637
|
-
}], center: [{
|
|
638
|
-
type: Input
|
|
639
|
-
}], controls: [{
|
|
640
|
-
type: Input
|
|
641
|
-
}], minZoom: [{
|
|
642
|
-
type: Input
|
|
643
|
-
}], maxZoom: [{
|
|
644
|
-
type: Input
|
|
645
|
-
}], minSize: [{
|
|
646
|
-
type: Input
|
|
647
|
-
}], pannable: [{
|
|
648
|
-
type: Input
|
|
649
|
-
}], popupSettings: [{
|
|
650
|
-
type: Input
|
|
651
|
-
}], wraparound: [{
|
|
652
|
-
type: Input
|
|
653
|
-
}], zoom: [{
|
|
654
|
-
type: Input
|
|
655
|
-
}], zoomable: [{
|
|
656
|
-
type: Input
|
|
657
|
-
}], beforeReset: [{
|
|
658
|
-
type: Output
|
|
659
|
-
}], mapClick: [{
|
|
660
|
-
type: Output
|
|
661
|
-
}], markerActivate: [{
|
|
662
|
-
type: Output
|
|
663
|
-
}], markerClick: [{
|
|
664
|
-
type: Output
|
|
665
|
-
}], markerCreated: [{
|
|
666
|
-
type: Output
|
|
667
|
-
}], panEnd: [{
|
|
668
|
-
type: Output
|
|
669
|
-
}], pan: [{
|
|
670
|
-
type: Output
|
|
671
|
-
}], reset: [{
|
|
672
|
-
type: Output
|
|
673
|
-
}], shapeClick: [{
|
|
674
|
-
type: Output
|
|
675
|
-
}], shapeCreated: [{
|
|
676
|
-
type: Output
|
|
677
|
-
}], shapeFeatureCreated: [{
|
|
678
|
-
type: Output
|
|
679
|
-
}], shapeMouseEnter: [{
|
|
680
|
-
type: Output
|
|
681
|
-
}], shapeMouseLeave: [{
|
|
682
|
-
type: Output
|
|
683
|
-
}], zoomStart: [{
|
|
684
|
-
type: Output
|
|
685
|
-
}], zoomEnd: [{
|
|
686
|
-
type: Output
|
|
687
|
-
}], centerChange: [{
|
|
688
|
-
type: Output
|
|
689
|
-
}], zoomChange: [{
|
|
690
|
-
type: Output
|
|
691
|
-
}], tooltipInstance: [{
|
|
692
|
-
type: ViewChild,
|
|
693
|
-
args: [TooltipPopupComponent, { static: true }]
|
|
694
|
-
}] } });
|