@vidro/map-handler 1.3.15 → 2.0.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.
Files changed (82) hide show
  1. package/README.md +67 -1
  2. package/map-handler.d.ts +134 -0
  3. package/package.json +10 -4
  4. package/src/types.d.ts +63 -0
  5. package/.babelrc +0 -6
  6. package/doc/animation.png +0 -0
  7. package/doc/confirmComponent.png +0 -0
  8. package/doc/giswater.png +0 -0
  9. package/doc/giswaterInfo.png +0 -0
  10. package/doc/giswaterInfoApi.png +0 -0
  11. package/doc/giswatergeojson.png +0 -0
  12. package/doc/multiTile.png +0 -0
  13. package/doc/multiTileNoGutter.png +0 -0
  14. package/doc/togglelayergiswater.png +0 -0
  15. package/doc/vidromaps-basic.png +0 -0
  16. package/examples/full/apidemo.js +0 -387
  17. package/examples/full/cachedToken.dat +0 -1
  18. package/examples/full/cachedTokenData.dat +0 -1
  19. package/examples/full/docker/Docker_compose.yml +0 -14
  20. package/examples/full/docker/Dockerfile +0 -27
  21. package/examples/full/index.php +0 -200
  22. package/examples/full/storeToken.php +0 -6
  23. package/examples/full/tester.css +0 -74
  24. package/examples/full/tester.js +0 -658
  25. package/examples/multipleIframes/index.js +0 -82
  26. package/examples/multipleIframes/index.php +0 -52
  27. package/examples/react-next/README.md +0 -282
  28. package/examples/react-next/atoms/PrintLayoutSelector.js +0 -51
  29. package/examples/react-next/atoms/PrintPaperSizeSelector.js +0 -49
  30. package/examples/react-next/atoms/PrintScaleSelector.js +0 -61
  31. package/examples/react-next/atoms/ZoomToScaleButton.js +0 -57
  32. package/examples/react-next/components/AuthComponent.js +0 -88
  33. package/examples/react-next/components/MapButtons.js +0 -108
  34. package/examples/react-next/components/MapFilters.js +0 -120
  35. package/examples/react-next/components/MapIframe.js +0 -25
  36. package/examples/react-next/components/MapInfo.js +0 -36
  37. package/examples/react-next/components/MapLayers.js +0 -60
  38. package/examples/react-next/components/MapList.js +0 -51
  39. package/examples/react-next/components/MapPrint.js +0 -50
  40. package/examples/react-next/contexts/auth.js +0 -147
  41. package/examples/react-next/contexts/maps.js +0 -185
  42. package/examples/react-next/contexts/messages.js +0 -358
  43. package/examples/react-next/contexts/print.js +0 -125
  44. package/examples/react-next/env.sample +0 -3
  45. package/examples/react-next/eslint.config.mjs +0 -14
  46. package/examples/react-next/hooks/useMapEvents.js +0 -118
  47. package/examples/react-next/jsconfig.json +0 -7
  48. package/examples/react-next/next.config.mjs +0 -6
  49. package/examples/react-next/package.json +0 -25
  50. package/examples/react-next/pages/_app.js +0 -5
  51. package/examples/react-next/pages/index.js +0 -97
  52. package/examples/react-next/postcss.config.mjs +0 -8
  53. package/examples/react-next/public/discord.svg +0 -8
  54. package/examples/react-next/public/favicon.ico +0 -0
  55. package/examples/react-next/public/file.svg +0 -1
  56. package/examples/react-next/public/logo.png +0 -0
  57. package/examples/react-next/public/next.svg +0 -1
  58. package/examples/react-next/shared/constants.js +0 -48
  59. package/examples/react-next/shared/cookies.js +0 -23
  60. package/examples/react-next/styles/globals.css +0 -24
  61. package/examples/react-next/tailwind.config.mjs +0 -17
  62. package/examples/serverLess/dist/index.23420cfa.js +0 -2973
  63. package/examples/serverLess/dist/index.23420cfa.js.map +0 -1
  64. package/examples/serverLess/dist/index.91b6cacc.js +0 -2
  65. package/examples/serverLess/dist/index.91b6cacc.js.map +0 -1
  66. package/examples/serverLess/dist/index.html +0 -1
  67. package/examples/serverLess/index.html +0 -39
  68. package/examples/serverLess/main.js +0 -113
  69. package/examples/serverLess/package.json +0 -18
  70. package/examples/serverLess/readme.md +0 -41
  71. package/examples/simple/index.html +0 -23
  72. package/examples/simple/simple.js +0 -80
  73. package/examples/taigua/index.html +0 -55
  74. package/examples/taigua/main.js +0 -490
  75. package/examples/tester.css +0 -74
  76. package/examples/vidromap/index.js +0 -20
  77. package/examples/vidromap/index.php +0 -111
  78. package/flows.md +0 -73
  79. package/helpers.md +0 -45
  80. package/src/index.js +0 -882
  81. package/src/shared/iframe-communicator.js +0 -18
  82. package/webpack.config.js +0 -22
package/src/index.js DELETED
@@ -1,882 +0,0 @@
1
- import { EventEmitter } from "events";
2
- import { iframeCommunicator } from "./shared/iframe-communicator";
3
-
4
- class Communicator extends EventEmitter {
5
- constructor(data) {
6
- super();
7
- this.domId = "map-frame";
8
- if (typeof window === "undefined") {
9
- return;
10
- }
11
- if (typeof data.id === "string") {
12
- this.domId = data.id;
13
- }
14
- this.com = new iframeCommunicator(data);
15
- window.addEventListener("message", (e) => this.onMessageReceived(e));
16
- this.sessionToken = data.sessionToken;
17
- }
18
-
19
- removeListener(event, listener) {
20
- super.removeListener(event, listener);
21
- }
22
- onMessageReceived = (e) => {
23
- switch (e.data.type) {
24
- case "onZoomChange":
25
- this.emitEvent("onZoomChange", e.data, e.data.domId);
26
- break;
27
- case "onCenterChange":
28
- this.emitEvent("onCenterChange", e.data, e.data.domId);
29
- break;
30
- case "geomAdded":
31
- this.emitEvent("geomAdded", e.data, e.data.domId);
32
- break;
33
- case "layers":
34
- this.emitEvent("layers", e.data, e.data.domId);
35
- break;
36
- case "geoJSONlayers":
37
- this.emitEvent("geoJSONlayers", e.data, e.data.domId);
38
- break;
39
- case "info":
40
- this.emitEvent("info", e.data, e.data.domId);
41
- break;
42
- case "error":
43
- this.emitEvent("error", e.data, e.data.domId);
44
- break;
45
- case "coordinates":
46
- this.emitEvent("coordinates", e.data, e.data.domId);
47
- break;
48
- case "activeLayer":
49
- this.emitEvent("activeLayer", e.data, e.data.domId);
50
- break;
51
- case "geolocation":
52
- this.emitEvent("geolocation", e.data, e.data.domId);
53
- break;
54
- case "WMSInfoAvailable":
55
- this.emitEvent("WMSInfoAvailable", e.data, e.data.domId);
56
- break;
57
- case "giswaterTiledBackgroundDisplayed":
58
- this.emitEvent(
59
- "giswaterTiledBackgroundDisplayed",
60
- e.data,
61
- e.data.domId
62
- );
63
- break;
64
- case "giswaterTiledBackgroundAvailable":
65
- this.emitEvent(
66
- "giswaterTiledBackgroundAvailable",
67
- e.data,
68
- e.data.domId
69
- );
70
- break;
71
- case "GiswaterLayerAvailableFilters":
72
- this.emitEvent("GiswaterLayerAvailableFilters", e.data, e.data.domId);
73
- break;
74
- case "loaded":
75
- this.emitEvent("loaded", e.data, e.data.domId);
76
- break;
77
- case "unloaded":
78
- this.emitEvent("unloaded", e.data, e.data.domId);
79
- break;
80
- case "availableWMSLayers":
81
- this.emitEvent("availableWMSLayers", e.data.layers, e.data.domId);
82
- break;
83
- case "layerElements":
84
- this.emitEvent("layerElements", e.data, e.data.domId);
85
- break;
86
- case "getToc":
87
- this.emitEvent("getToc", e.data, e.data.domId);
88
- break;
89
- case "status":
90
- this.emitEvent("status", e.data, e.data.domId);
91
- break;
92
- case "MeasureEnd":
93
- this.emitEvent("MeasureEnd", e.data, e.data.domId);
94
- break;
95
- case "queue":
96
- this.emitEvent("queue", e.data, e.data.domId);
97
- break;
98
- case "version":
99
- this.emitEvent("version", e.data, e.data.domId);
100
- break;
101
- case "hover":
102
- this.emitEvent("hover", e.data, e.data.domId);
103
- break;
104
- case "screenshot":
105
- this.emitEvent("screenshot", e.data, e.data.domId);
106
- break;
107
- case "print":
108
- this.emitEvent("print", e.data, e.data.domId);
109
- break;
110
- case "dpi":
111
- this.emitEvent("dpi", e.data, e.data.domId);
112
- break;
113
-
114
- //case "getLegend": this.emitEvent("getLegend", e.data,e.data.domId); break;
115
- }
116
- };
117
-
118
- emitEvent = (type, data, domId) => {
119
- if (domId === this.domId) {
120
- delete data.domId;
121
- this.emit(type, data);
122
- }
123
- };
124
-
125
- ZoomIn = () => {
126
- this.com.sendMessageToMap({
127
- type: "zoomIn",
128
- sessionToken: this.sessionToken,
129
- });
130
- };
131
-
132
- ZoomOut = () => {
133
- this.com.sendMessageToMap({
134
- type: "zoomOut",
135
- sessionToken: this.sessionToken,
136
- });
137
- };
138
-
139
- AddGeom = (geomtype, options) => {
140
- this.com.sendMessageToMap({
141
- type: "AddGeom",
142
- geom: geomtype,
143
- texts: options?.texts,
144
- style: options?.style,
145
- drawOnEnd: options?.drawOnEnd,
146
- showConfirm: options?.showConfirm,
147
- sessionToken: this.sessionToken,
148
- });
149
- };
150
-
151
- CancelAddGeom = (s) => {
152
- this.com.sendMessageToMap({
153
- type: "CancelAddGeom",
154
- });
155
- };
156
-
157
- loadMultipleLayers = (layers) => {
158
- if (typeof layers !== "undefined") {
159
- this.com.sendMessageToMap({
160
- type: "loadMultipleLayers",
161
- layers: layers,
162
- });
163
- } else {
164
- this.emit("error", { error: "no layers" });
165
- }
166
- };
167
-
168
- toggleGroup = (layers) => {
169
- this.com.sendMessageToMap({
170
- type: "toggleGroup",
171
- layers,
172
- });
173
- };
174
-
175
- toggleLayer = (layer, properties) => {
176
- if (typeof properties === "undefined") {
177
- properties = {
178
- gutter: null,
179
- transparent: null,
180
- singletile: null,
181
- zIndex: null,
182
- };
183
- }
184
-
185
- if (properties.singletile !== null) {
186
- if (typeof properties.singletile !== "boolean") {
187
- properties.singletile = null;
188
- this.emit("error", {
189
- error: "singletile must be a Boolean",
190
- type: "error",
191
- });
192
- }
193
- }
194
- if (
195
- properties.gutter !== "" &&
196
- properties.gutter !== null &&
197
- !properties.singletile
198
- ) {
199
- if (isNaN(parseInt(properties.gutter))) {
200
- properties.gutter = null;
201
- this.emit("error", { type: "error", error: "Gutter must be a number" });
202
- }
203
- if (properties.singletile) {
204
- properties.gutter = null;
205
- this.emit("error", {
206
- type: "error",
207
- error:
208
- "Gutter can only be user with multitile layers; set singletile to false",
209
- });
210
- }
211
- }
212
-
213
- if (properties.transparent !== null) {
214
- if (typeof properties.transparent !== "boolean") {
215
- properties.transparent = null;
216
- this.emit("error", {
217
- type: "error",
218
- error: "transparent must be a Boolean",
219
- });
220
- }
221
- }
222
- this.com.sendMessageToMap({
223
- type: "toggleLayer",
224
- layer: layer,
225
- gutter: !isNaN(parseInt(properties.gutter))
226
- ? parseInt(properties.gutter)
227
- : null,
228
- transparent: properties.transparent,
229
- singletile: properties.singletile,
230
- sessionToken: this.sessionToken,
231
- zIndex: !isNaN(parseInt(properties.zIndex))
232
- ? parseInt(properties.zIndex)
233
- : null,
234
- });
235
- };
236
-
237
- removeLayer = (layer) => {
238
- this.com.sendMessageToMap({
239
- type: "removeLayer",
240
- layer: layer,
241
- sessionToken: this.sessionToken,
242
- });
243
- };
244
-
245
- displayLayer = (layer) => {
246
- this.com.sendMessageToMap({
247
- type: "displayLayer",
248
- layer: layer,
249
- sessionToken: this.sessionToken,
250
- });
251
- };
252
- setActiveLayer = (layer) => {
253
- this.com.sendMessageToMap({
254
- type: "setActiveLayer",
255
- layer: layer,
256
- sessionToken: this.sessionToken,
257
- });
258
- };
259
-
260
- getActiveLayer = () => {
261
- this.com.sendMessageToMap({
262
- type: "getActiveLayer",
263
- sessionToken: this.sessionToken,
264
- });
265
- };
266
-
267
- bringLayerToTop = (layer) => {
268
- this.com.sendMessageToMap({
269
- type: "bringLayerToTop",
270
- layer: layer,
271
- sessionToken: this.sessionToken,
272
- });
273
- };
274
-
275
- bringLayerToBottom = (layer) => {
276
- this.com.sendMessageToMap({
277
- type: "bringLayerToBottom",
278
- layer: layer,
279
- sessionToken: this.sessionToken,
280
- });
281
- };
282
-
283
- loadWMSAvailableLayers = () => {
284
- this.com.sendMessageToMap({
285
- type: "loadWMSAvailableLayers",
286
- sessionToken: this.sessionToken,
287
- });
288
- };
289
-
290
- clear = () => {
291
- this.com.sendMessageToMap({
292
- type: "clear",
293
- sessionToken: this.sessionToken,
294
- });
295
- };
296
-
297
- Highlight = (options) => {
298
- this.com.sendMessageToMap({
299
- type: "highlight",
300
- geom: options.geom,
301
- zoom: options.zoom,
302
- metadata: options?.data,
303
- center: options?.center !== undefined ? options.center : false,
304
- animate: options?.animate,
305
- style: options?.style,
306
- sessionToken: this.sessionToken,
307
- });
308
- };
309
-
310
- DrawGeometries = (geoms) => {
311
- if (typeof geoms !== "undefined") {
312
- this.com.sendMessageToMap({
313
- type: "DrawGeometries",
314
- geoms: geoms,
315
- });
316
- } else {
317
- this.emit("error", { type: "error", error: "no geoms" });
318
- }
319
- };
320
-
321
- RemoveGeometriesByProperty = (layer, property, value) => {
322
- if (
323
- typeof layer !== "undefined" &&
324
- typeof property !== "undefined" &&
325
- typeof value !== "undefined"
326
- ) {
327
- this.com.sendMessageToMap({
328
- type: "RemoveGeometriesByProperty",
329
- layer,
330
- property,
331
- value,
332
- });
333
- } else {
334
- this.emit("error", {
335
- type: "error",
336
- error: "no layer, property or value",
337
- });
338
- }
339
- };
340
-
341
- UpdateGeometriesByProperty = (layer, property, value, style) => {
342
- if (
343
- typeof layer !== "undefined" &&
344
- typeof property !== "undefined" &&
345
- typeof style !== "undefined" &&
346
- typeof value !== "undefined"
347
- ) {
348
- this.com.sendMessageToMap({
349
- type: "UpdateGeometriesByProperty",
350
- layer,
351
- property,
352
- value,
353
- style,
354
- });
355
- } else {
356
- this.emit("error", {
357
- type: "error",
358
- error: "no layer, property or value",
359
- });
360
- }
361
- };
362
-
363
- DrawGeometry = (geom, styles, name, id) => {
364
- console.warn("DrawGeometry is deprecated. Use DrawGeometries");
365
- const sty = {
366
- stroke_color: styles.stroke_color ? styles.stroke_color : null,
367
- fill_color: styles.fill_color ? styles.fill_color : null,
368
- point_fill_color: styles.point_fill_color
369
- ? styles.point_fill_color
370
- : null,
371
- geom_radius: styles.geom_radius ? styles.geom_radius : null,
372
- stroke_width: styles.stroke_width ? styles.stroke_width : null,
373
- //text
374
- font_color: styles.font_color ? styles.font_color : null,
375
- font: styles.font ? styles.font : null,
376
- font_size: styles.font_size ? styles.font_size : null,
377
- placement: styles.placement ? styles.placement : null,
378
- fontFillColor: styles.fontFillColor ? styles.fontFillColor : null,
379
- fontStrokeColor: styles.fontStrokeColor ? styles.fontStrokeColor : null,
380
- fontStrokeWidth: styles.fontStrokeWidth ? styles.fontStrokeWidth : null,
381
- baseline: styles.baseline ? styles.baseline : null,
382
- align: styles.align ? styles.align : null,
383
- display: styles.display ? styles.display : null,
384
- offsetY: styles.offsetY ? styles.offsetY : null,
385
- };
386
-
387
- this.com.sendMessageToMap({
388
- type: "drawGeometry",
389
- geom: geom,
390
- style: sty,
391
- name: name ? name : "highlight",
392
- id: id ? id : Math.floor(Math.random() * 1000) + 1,
393
- sessionToken: this.sessionToken,
394
- });
395
- };
396
-
397
- RemoveGeometry = (id, layer = null) => {
398
- const _id = typeof id == "undefined" ? null : id;
399
- if (!_id) {
400
- console.error("No element id");
401
- this.emit("error", { type: "error", error: "No element id" });
402
- return;
403
- }
404
- this.com.sendMessageToMap({
405
- type: "removeGeometry",
406
- layer,
407
- id: _id,
408
- });
409
- };
410
-
411
- zoomToExtent = () => {
412
- this.com.sendMessageToMap({
413
- type: "zoomToExtent",
414
- sessionToken: this.sessionToken,
415
- });
416
- };
417
-
418
- zoomToScale = (scale) => {
419
- const allowedScales = [
420
- "1:100",
421
- "1:200",
422
- "1:400",
423
- "1:500",
424
- "1:1000",
425
- "1:2000",
426
- "1:5000",
427
- "1:10000",
428
- "1:50000",
429
- ];
430
-
431
- if (!allowedScales.includes(scale)) {
432
- console.error(
433
- `Invalid scale: ${scale}. Allowed values are: ${allowedScales.join(
434
- ", "
435
- )}`
436
- );
437
- this.emit("error", {
438
- type: "error",
439
- error: `Invalid scale: ${scale}`,
440
- });
441
- return;
442
- }
443
- this.com.sendMessageToMap({
444
- type: "zoomToScale",
445
- sessionToken: this.sessionToken,
446
- scale: scale,
447
- });
448
- };
449
- zoomToCoordinates = (lat, lon, zoomLevel) => {
450
- if (!isNaN(parseInt(zoomLevel))) {
451
- this.com.sendMessageToMap({
452
- type: "zoomToCoordinates",
453
- sessionToken: this.sessionToken,
454
- coordinates: [lat, lon],
455
- zoomLevel: zoomLevel,
456
- });
457
- }
458
- };
459
-
460
- zoomToGeometry = (geom, limits) => {
461
- this.com.sendMessageToMap({
462
- type: "zoomToGeometry",
463
- sessionToken: this.sessionToken,
464
- geom,
465
- limits,
466
- });
467
- };
468
-
469
- infoFromCoordinates = (type, layer, hitTolerance, format) => {
470
- const _layer = typeof layer == "undefined" ? null : layer;
471
- const _hitTolerance =
472
- typeof hitTolerance == "undefined" || !hitTolerance
473
- ? 5
474
- : parseInt(hitTolerance);
475
- const _format = typeof format == "undefined" ? "xml" : format.toLowerCase();
476
- if (_format !== "xml" && _format !== "json") {
477
- console.error("Format must be 'xml' or 'json");
478
- return;
479
- }
480
- if (isNaN(_hitTolerance)) {
481
- console.error("hitTolerance must be a number");
482
- return;
483
- }
484
- this.com.sendMessageToMap({
485
- type: "infoFromCoordinates",
486
- info: type,
487
- layer: _layer,
488
- format: _format,
489
- hitTolerance: _hitTolerance,
490
- sessionToken: this.sessionToken,
491
- });
492
- };
493
-
494
- getElementsFromLayer = (layer, limit, format) => {
495
- const _format = typeof format == "undefined" ? "xml" : format.toLowerCase();
496
- if (_format !== "xml" && _format !== "json") {
497
- console.error("Format must be 'xml' or 'json");
498
- return;
499
- }
500
- if (isNaN(limit)) {
501
- console.error("Limit must be a number");
502
- return;
503
- }
504
- const _layer = typeof layer == "undefined" ? null : layer;
505
- this.com.sendMessageToMap({
506
- type: "getElementsFromLayer",
507
- layer: _layer,
508
- limit: typeof limit != "undefined" ? parseInt(limit) : 100,
509
- format: format,
510
- sessionToken: this.sessionToken,
511
- });
512
- };
513
-
514
- Geolocalize = (toggle, options) => {
515
- this.com.sendMessageToMap({
516
- type: "Geolocalize",
517
- toggle: toggle,
518
- options: options,
519
- sessionToken: this.sessionToken,
520
- });
521
- };
522
-
523
- /* deprecated since v1.1.19 */
524
- toggleGiswaterTiled = (toggle, tiled) => {
525
- this.com.sendMessageToMap({
526
- type: "toggleTiled",
527
- toggle: toggle,
528
- tiled: tiled,
529
- sessionToken: this.sessionToken,
530
- });
531
- };
532
-
533
- toggleTiled = (toggle, tiled) => {
534
- this.com.sendMessageToMap({
535
- type: "toggleTiled",
536
- toggle: toggle,
537
- tiled: tiled,
538
- sessionToken: this.sessionToken,
539
- });
540
- };
541
-
542
- getTiled = () => {
543
- this.com.sendMessageToMap({
544
- type: "getTiled",
545
- sessionToken: this.sessionToken,
546
- });
547
- };
548
-
549
- toggleSecondaryBackground = (toggle) => {
550
- this.com.sendMessageToMap({
551
- type: "toggleSecondaryBackground",
552
- toggle: toggle,
553
- });
554
- };
555
-
556
- getSecondaryBackground = () => {
557
- this.com.sendMessageToMap({
558
- type: "getSecondaryBackground",
559
- sessionToken: this.sessionToken,
560
- });
561
- };
562
-
563
- reloadDisplayedLayers = () => {
564
- return this.com.sendMessageToMap({
565
- type: "reloadDisplayedLayers",
566
- sessionToken: this.sessionToken,
567
- });
568
- };
569
-
570
- addGeoJSON = (geoJSON, options, name) => {
571
- if (geoJSON) {
572
- return this.com.sendMessageToMap({
573
- type: "addGeoJSON",
574
- geoJSON: geoJSON,
575
- options:
576
- typeof options != "undefined"
577
- ? options
578
- : { fillcolor: null, strokecolor: null },
579
- name: name ? name : Math.random().toString(36).substring(7),
580
- sessionToken: this.sessionToken,
581
- });
582
- } else {
583
- this.emit("error", { type: "error", error: "No geoJSON data" });
584
- return;
585
- }
586
- };
587
-
588
- clearGeoJSON = (name) => {
589
- if (!name) {
590
- this.emit("error", { type: "error", error: "No geoJSON layer name" });
591
- }
592
- return this.com.sendMessageToMap({
593
- type: "clearGeoJSON",
594
- name: name,
595
- sessionToken: this.sessionToken,
596
- });
597
- };
598
-
599
- removeGeoJSONLayer = (name) => {
600
- if (name) {
601
- return this.com.sendMessageToMap({
602
- type: "removeGeoJSONLayer",
603
- name: name,
604
- sessionToken: this.sessionToken,
605
- });
606
- } else {
607
- this.emit("error", { type: "error", error: "No geoJSON data" });
608
- return;
609
- }
610
- };
611
-
612
- setGiswaterFilters = (filters) => {
613
- var filtersJson = filters;
614
- if (filters) {
615
- if (typeof filters != "object") {
616
- filters = filters.trim();
617
- filters = filters.replace(/^\s+|\s+$/g, "");
618
- filters = filters.replace(/\\/g, "");
619
- try {
620
- filtersJson = JSON.parse(filters);
621
- } catch (e) {
622
- this.emit("error", {
623
- type: "error",
624
- error: "Filters is not a valid JSON",
625
- });
626
- return;
627
- }
628
- }
629
-
630
- return this.com.sendMessageToMap({
631
- type: "setGiswaterFilters",
632
- filters: filtersJson,
633
- sessionToken: this.sessionToken,
634
- });
635
- } else {
636
- this.emit("error", { type: "error", error: "No filters" });
637
- return;
638
- }
639
- };
640
-
641
- setFilters = (filters) => {
642
- var filtersJson = filters;
643
- if (filters) {
644
- if (typeof filters != "object") {
645
- filters = filters.trim();
646
- filters = filters.replace(/^\s+|\s+$/g, "");
647
- filters = filters.replace(/\\/g, "");
648
- try {
649
- filtersJson = JSON.parse(filters);
650
- } catch (e) {
651
- this.emit("error", {
652
- type: "error",
653
- error: "Filters is not a valid JSON",
654
- });
655
- return;
656
- }
657
- }
658
- const isValid = filtersJson.every((item) => Array.isArray(item.filters));
659
-
660
- // isValid will be true if all elements have "filters" property that is an array
661
- if (!isValid) {
662
- this.emit("error", {
663
- type: "error",
664
- error: "Filters is not a valid JSON - missing filters array",
665
- });
666
- return;
667
- }
668
- return this.com.sendMessageToMap({
669
- type: "setFilters",
670
- filters: filtersJson,
671
- sessionToken: this.sessionToken,
672
- });
673
- } else {
674
- this.emit("error", { type: "error", error: "No filters" });
675
- return;
676
- }
677
- };
678
-
679
- getGiswaterLayerAvailableFilters = (layer_name) => {
680
- if (layer_name) {
681
- return this.com.sendMessageToMap({
682
- type: "getGiswaterLayerAvailableFilters",
683
- name: layer_name,
684
- sessionToken: this.sessionToken,
685
- });
686
- } else {
687
- this.emit("error", { type: "error", error: "No layer_name" });
688
- return;
689
- }
690
- };
691
-
692
- CenterMap = (lat, lon) => {
693
- this.com.sendMessageToMap({
694
- type: "centerMap",
695
- coordinates: [lat, lon],
696
- });
697
- };
698
-
699
- getToc = () => {
700
- return this.com.sendMessageToMap({
701
- type: "getToc",
702
- sessionToken: this.sessionToken,
703
- });
704
- };
705
-
706
- setDebug = (what) => {
707
- if (!isNaN(parseInt(what))) {
708
- this.com.sendMessageToMap({
709
- type: "setDebug",
710
- what: what,
711
- sessionToken: this.sessionToken,
712
- });
713
- } else {
714
- console.error("Debug is not a integer");
715
- }
716
- };
717
-
718
- setCustomColors = (properties) => {
719
- //validate data
720
- if (typeof properties !== "object") {
721
- console.error("properties is not an object");
722
- return;
723
- }
724
- if (properties.hasOwnProperty("geom_stroke_width")) {
725
- if (isNaN(parseInt(properties.geom_stroke_width))) {
726
- console.error("geom_stroke_width is not an number");
727
- return;
728
- } else {
729
- properties.geom_stroke_width = parseInt(properties.geom_stroke_width);
730
- }
731
- } else {
732
- properties.geom_stroke_width = 1;
733
- }
734
- if (properties.hasOwnProperty("geom_radius")) {
735
- if (isNaN(parseInt(properties.geom_radius))) {
736
- console.error("geom_stroke_width is not an number");
737
- return;
738
- } else {
739
- properties.geom_radius = parseInt(properties.geom_radius);
740
- }
741
- } else {
742
- properties.geom_radius = 4;
743
- }
744
-
745
- if (properties.hasOwnProperty("geom_shape")) {
746
- if (
747
- properties.geom_shape !== "circle" &&
748
- properties.geom_shape !== "square"
749
- ) {
750
- properties.geom_shape = "circle";
751
- console.error("geom_shape must be either 'circle' or 'square'");
752
- }
753
- }
754
- this.com.sendMessageToMap({
755
- type: "setCustomColors",
756
- properties: properties,
757
- sessionToken: this.sessionToken,
758
- });
759
- };
760
-
761
- changeBackground = (newBackground) => {
762
- return this.com.sendMessageToMap({
763
- type: "changeBackground",
764
- sessionToken: this.sessionToken,
765
- newBackground: newBackground,
766
- });
767
- };
768
-
769
- getBackground = () => {
770
- this.com.sendMessageToMap({
771
- type: "getBackground",
772
- sessionToken: this.sessionToken,
773
- });
774
- };
775
-
776
- initMeasure = (measure, textStart, textContinue) => {
777
- return this.com.sendMessageToMap({
778
- type: "initMeasure",
779
- sessionToken: this.sessionToken,
780
- measure,
781
- textStart,
782
- textContinue,
783
- });
784
- };
785
- cancelMeasure = () => {
786
- return this.com.sendMessageToMap({
787
- type: "cancelMeasure",
788
- sessionToken: this.sessionToken,
789
- });
790
- };
791
-
792
- setBboxSize = (bbox) => {
793
- if (!isNaN(parseInt(bbox))) {
794
- this.com.sendMessageToMap({
795
- type: "setBoundingBoxSize",
796
- bbox: bbox,
797
- sessionToken: this.sessionToken,
798
- });
799
- } else {
800
- console.error("bbox is not a integer");
801
- }
802
- };
803
- addIcon = ({ icon, coordinates }) => {
804
- // Validate icon
805
- if (!(icon instanceof ArrayBuffer)) {
806
- this.emit("error", {
807
- type: "error",
808
- error: "Invalid icon: Expected an ArrayBuffer.",
809
- });
810
- }
811
-
812
- // Validate coordinates
813
- if (!Array.isArray(coordinates)) {
814
- this.emit("error", {
815
- type: "error",
816
- error: "Invalid coordinates: Expected an array [longitude, latitude].",
817
- });
818
- }
819
-
820
- // Ensure coordinates contain exactly two numeric values
821
- if (
822
- coordinates.length !== 2 ||
823
- typeof coordinates[0] !== "number" ||
824
- typeof coordinates[1] !== "number"
825
- ) {
826
- this.emit("error", {
827
- type: "error",
828
- error:
829
- "Invalid coordinates: Expected an array with two numeric values [longitude, latitude].",
830
- });
831
- }
832
-
833
- // Send the message to the map
834
- this.com.sendMessageToMap({
835
- type: "AddIcon",
836
- icon,
837
- coordinates,
838
- sessionToken: this.sessionToken,
839
- });
840
- };
841
-
842
- screenshot = (options) => {
843
- this.com.sendMessageToMap({
844
- type: "screenshot",
845
- options,
846
- sessionToken: this.sessionToken,
847
- });
848
- };
849
-
850
- setDpi = (options) => {
851
- this.com.sendMessageToMap({
852
- type: "setDpi",
853
- options,
854
- sessionToken: this.sessionToken,
855
- });
856
- };
857
- //***** PRINT ******/
858
-
859
- print = (options) => {
860
- this.com.sendMessageToMap({
861
- type: "print",
862
- options,
863
- sessionToken: this.sessionToken,
864
- });
865
- };
866
- startPrint = (options) => {
867
- this.com.sendMessageToMap({
868
- type: "printStart",
869
- options,
870
- sessionToken: this.sessionToken,
871
- });
872
- };
873
- cancelPrint = (options) => {
874
- this.com.sendMessageToMap({
875
- type: "printCancel",
876
- options,
877
- sessionToken: this.sessionToken,
878
- });
879
- };
880
- }
881
-
882
- export { Communicator };