@bmlt-enabled/croutonjs 4.3.2 → 4.3.4
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/crouton-gmaps.js +743 -494
- package/crouton-gmaps.min.js +6 -6
- package/crouton-gmaps.min.js.map +1 -1
- package/crouton-map.js +467 -308
- package/crouton-map.min.js +1 -1
- package/crouton-map.min.js.map +1 -1
- package/crouton.js +494 -324
- package/crouton.min.js +6 -6
- package/crouton.min.js.map +1 -1
- package/crouton.nojquery.js +24 -13
- package/crouton.nojquery.min.js +6 -6
- package/crouton.nojquery.min.js.map +1 -1
- package/package.json +1 -1
package/crouton-map.js
CHANGED
|
@@ -1,127 +1,137 @@
|
|
|
1
1
|
function MapDelegate(config) {
|
|
2
|
-
const shadowUrl = config.BMLTPlugin_images
|
|
2
|
+
const shadowUrl = config.BMLTPlugin_images
|
|
3
|
+
? config.BMLTPlugin_images + "/NAMarkerS.png"
|
|
3
4
|
: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACsAAAAgEAYAAADbCl1AAAAABmJLR0T///////8JWPfcAAAACXBIWXMAAABIAAAASABGyWs+AAAF7UlEQVRo3u2YaWhcVRTH77zJzGS2pG0c1FRr6o5rXVBxwSLuCu5WLGLADa2VKlbFFUVcUasftIIiivu+C4q7xRVRcF8xVuIkcTL7TGZ5zw/ndybklSGZyTT98s6XH/e9d7f/vfecc58xnnnmmWeeeeaZZ5555plnnnnmmWeebXTzb+L+fbALRuEieCBcweffCK0K3JdpHAN3ornvKS93vR+A31Gf99YBtF+jv6/hefAnmG4yD8f9YK6FVSGDcDN4ELyHz5YyPIRU3QPUCy0RRgrC6IvCGM/jCyjfSPkJvrsXxoThVbR3NP3sKrTqdPgQuj2qA4B/w6qLDYF1xBtbSF1AJmwO5/U6iKD+IuP/mAmX4dXC7gsoP4UwW1F+VxjcmfoPItDvtP8880YA+330OEVYOVNYvEqYP0GY3UNY2I3vllD/LObxMGTcRhekMfFOmwX1aO9Hdwhm9Qm7liHMoDAyOrVarBciXHgvvmdBguykAPX8SfgM/VxEQ2cj7M3wTnQ4Qlg7Q1hifNlXhKPoM7Inzw/h+91ph/GZXyAuyjidFlYFTcBrePwOQuLruk8Xxm8X9m4pnHcHQiJc5A2+Z2cEBhDuD6HvQ9pngXzd9Itr8J1GOQK/ZN5rICfHuQLBhoQFjnryV+EQPng0LizjOpy7XcKqj+6YK1BBN4fPIcBfCIMQ8fuE85nggmsR9AZhlCMcyjM8XIf1CGSCBmFMCgE/o7w9ZAEbvjwDQ3zP0XcIYuYfeIkg8B/9X8/3x/H+ZfgnxMdPugC12e5YrT8P4uz9Bwsj+J4+BpZ4lfKAsCcnDBPduzha1m+0pz74RMrbwrhLOKX6cl1oDSY68Qk4wmuOvINgVXxyZli4Hp80dLxwnHlWdd5LoS5cx4TVCXEUrdUIylFMIMTClyj3CGM21QlCFgP0fUJ7+LKGSwm5hGs2bn3uuKiCctSd2yDjrnIycm8Kk+MI+4Nw9FhhmZNg6zjwyZMuYLbCaj2Ovo9gFDxM2MeOWESU7h8QxvF5gaepR9DwLXMJ2eXqZ7pxNhNyPY/pz8F11BlPhZ2YWygc47vh/SkjWHFH6u1Au7dCdQVNBWrV9KjtQ5EOoyTW/Q8IF5PoJ0iwQwhuXU59orKJudqdztxHXNMdfLrzOOS5fZOw+hWfHynM4OvHHoPEgvQHwhInrj6f9lfCcdc4NrB2Lwi6o0h/LJx9GKfex45JcGOK/kh3Wwt97KTGDlWX0myhcR2NdGYMErScyyC+t86NrUIQzFNO7S1MrhIOk42MkK9mFgvLpFc2QpvVMxXULVCrpguiCecWkCNkOGLOLVB3IhNq3Fz6ofpQHY8KyQXBEEwc0jaDz7O5SdW5wVW/FZZ2EeZI5NODkAXIIFCB/HeC+nU2gPM5/bwAszMVtF1h3TcpjqJzPsVnhRWibYXv6tvQnQrJwBt5pgqrQeBn2iV/1Xzb5sjW2EEVfHMRAfOkT2mOfIbnufsREldVWcu4uJHZnCRzF8SlTCb8LerUtrBar0S/7NwqvrbADsh/KoxzIwqw4/wcZecj2lEfeSET5WJga9TmplPGJxa4yua2Q0BcSZYbVZ4FL5GXVnXh8em2XkU1/10xdT6NE9O2tesKVGCNityla2QHBQTO4Et72Ikhgp3vYsjNzD6UibPTJ05intyMCtzINNjo1TLHT5Yid//yIOO4kvZo38FlGC4ohmxkwzt+p6zV4NXsN9+lrgGShllrhN0c4dDrPH8PAV5DOITKkO6MkUX8ey4kiIzgw1MsZA7frju5xu9Cm9+Hhn8D5kmoQVPTsZaP+Eyt1R2rA1HfQ15ovuD127wmO8jjQ1MEqyBpUImraYVgk8UHZziK+UFh8WSEY+GqCGazg21+tpi3IDvXJF3jnPXRnithNcikIVdQBwFsLgYl0pcU39kEBetUBOM/aZ6/XyWEnKC9+nXU4yeKowKqC9KdmXONa86F7JS5f1jjWw0/ig3R1n+UMIxAvUTzXoQKk+4E+NFtrZzavDkHEqQarme6q+0mt/8BTRrNnwf6/EMAAAAASUVORK5CYII=";
|
|
4
|
-
let iconUrl = config.BMLTPlugin_images
|
|
5
|
+
let iconUrl = config.BMLTPlugin_images
|
|
6
|
+
? config.BMLTPlugin_images + "/NAMarker.png"
|
|
5
7
|
: "data:image/png;base64,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";
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
var g_icon_image_single = L.icon({
|
|
8
10
|
iconUrl: iconUrl,
|
|
9
11
|
shadowUrl: shadowUrl,
|
|
10
|
-
iconSize:
|
|
11
|
-
shadowSize:
|
|
12
|
-
iconAnchor:
|
|
13
|
-
shadowAnchor: [12, 32],
|
|
14
|
-
popupAnchor:
|
|
12
|
+
iconSize: [23, 32], // size of the icon
|
|
13
|
+
shadowSize: [43, 32], // size of the shadow
|
|
14
|
+
iconAnchor: [12, 32], // point of the icon which will correspond to marker's location
|
|
15
|
+
shadowAnchor: [12, 32], // the same for the shadow
|
|
16
|
+
popupAnchor: [0, -32], // point from which the popup should open relative to the iconAnchor
|
|
15
17
|
});
|
|
16
|
-
iconUrl = config.BMLTPlugin_images
|
|
18
|
+
iconUrl = config.BMLTPlugin_images
|
|
19
|
+
? config.BMLTPlugin_images + "/NAMarkerG.png"
|
|
17
20
|
: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAhCAYAAAAyCTAQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAADTRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+Cjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDQuMi4yLWMwNjMgNTMuMzUyNjI0LCAyMDA4LzA3LzMwLTE4OjA1OjQxICAgICAgICAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgeG1sbnM6eG1wUmlnaHRzPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvcmlnaHRzLyIKICAgIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIKICAgIHhtbG5zOklwdGM0eG1wQ29yZT0iaHR0cDovL2lwdGMub3JnL3N0ZC9JcHRjNHhtcENvcmUvMS4wL3htbG5zLyIKICAgeG1wUmlnaHRzOldlYlN0YXRlbWVudD0iIgogICBwaG90b3Nob3A6QXV0aG9yc1Bvc2l0aW9uPSIiPgogICA8ZGM6cmlnaHRzPgogICAgPHJkZjpBbHQ+CiAgICAgPHJkZjpsaSB4bWw6bGFuZz0ieC1kZWZhdWx0Ii8+CiAgICA8L3JkZjpBbHQ+CiAgIDwvZGM6cmlnaHRzPgogICA8ZGM6Y3JlYXRvcj4KICAgIDxyZGY6U2VxPgogICAgIDxyZGY6bGkvPgogICAgPC9yZGY6U2VxPgogICA8L2RjOmNyZWF0b3I+CiAgIDxkYzp0aXRsZT4KICAgIDxyZGY6QWx0PgogICAgIDxyZGY6bGkgeG1sOmxhbmc9IngtZGVmYXVsdCI+TkFNYXJrZXI8L3JkZjpsaT4KICAgIDwvcmRmOkFsdD4KICAgPC9kYzp0aXRsZT4KICAgPHhtcFJpZ2h0czpVc2FnZVRlcm1zPgogICAgPHJkZjpBbHQ+CiAgICAgPHJkZjpsaSB4bWw6bGFuZz0ieC1kZWZhdWx0Ii8+CiAgICA8L3JkZjpBbHQ+CiAgIDwveG1wUmlnaHRzOlVzYWdlVGVybXM+CiAgIDxJcHRjNHhtcENvcmU6Q3JlYXRvckNvbnRhY3RJbmZvCiAgICBJcHRjNHhtcENvcmU6Q2lBZHJFeHRhZHI9IiIKICAgIElwdGM0eG1wQ29yZTpDaUFkckNpdHk9IiIKICAgIElwdGM0eG1wQ29yZTpDaUFkclJlZ2lvbj0iIgogICAgSXB0YzR4bXBDb3JlOkNpQWRyUGNvZGU9IiIKICAgIElwdGM0eG1wQ29yZTpDaUFkckN0cnk9IiIKICAgIElwdGM0eG1wQ29yZTpDaVRlbFdvcms9IiIKICAgIElwdGM0eG1wQ29yZTpDaUVtYWlsV29yaz0iIgogICAgSXB0YzR4bXBDb3JlOkNpVXJsV29yaz0iIi8+CiAgPC9yZGY6RGVzY3JpcHRpb24+CiA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9InciPz7HRMckAAAG20lEQVR42qyWeXBV9RXHP/fet+QlL+QlPAgkeZIFxAWxqWBVagVKYtQUUTvtSIeKLYNY24pY/MPptA50nI4OnXbGzojVoSLNdFGJ6ci0MRSo1BZcILgQgglGSdJsL9vL2+679/bcBasVpON4Zn7v3d/2Pef3Pcvvp/DpskjaLQFYmq9QLf++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";
|
|
18
21
|
var g_icon_image_multi = L.icon({
|
|
19
22
|
iconUrl: iconUrl,
|
|
20
23
|
shadowUrl: shadowUrl,
|
|
21
|
-
iconSize:
|
|
22
|
-
shadowSize:
|
|
23
|
-
iconAnchor:
|
|
24
|
-
shadowAnchor: [12, 32],
|
|
25
|
-
popupAnchor:
|
|
24
|
+
iconSize: [23, 32], // size of the icon
|
|
25
|
+
shadowSize: [43, 32], // size of the shadow
|
|
26
|
+
iconAnchor: [12, 32], // point of the icon which will correspond to marker's location
|
|
27
|
+
shadowAnchor: [12, 32], // the same for the shadow
|
|
28
|
+
popupAnchor: [0, -32], // point from which the popup should open relative to the iconAnchor
|
|
26
29
|
});
|
|
27
|
-
iconUrl = config.BMLTPlugin_images
|
|
30
|
+
iconUrl = config.BMLTPlugin_images
|
|
31
|
+
? config.BMLTPlugin_images + "/NAMarkerSel.png"
|
|
28
32
|
: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAhCAYAAAAyCTAQAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA/JpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wUmlnaHRzPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvcmlnaHRzLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1wUmlnaHRzOk1hcmtlZD0iRmFsc2UiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OEFFRUI5RkFCQkM0MTFFMEFEOEJGMzBCOTRGRDNBMTMiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OEFFRUI5RjlCQkM0MTFFMEFEOEJGMzBCOTRGRDNBMTMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTMyBNYWNpbnRvc2giPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0idXVpZDo5NkJFNTVGQjQ5MDhEQzExQUFBN0ZDRDFGNTZEMTYyMiIgc3RSZWY6ZG9jdW1lbnRJRD0idXVpZDpE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";
|
|
29
33
|
var g_icon_image_selected = L.icon({
|
|
30
34
|
iconUrl: iconUrl,
|
|
31
35
|
shadowUrl: shadowUrl,
|
|
32
|
-
iconSize:
|
|
33
|
-
shadowSize:
|
|
34
|
-
iconAnchor:
|
|
35
|
-
shadowAnchor: [12, 32],
|
|
36
|
-
popupAnchor:
|
|
37
|
-
|
|
38
|
-
iconUrl = config.BMLTPlugin_images
|
|
36
|
+
iconSize: [23, 32], // size of the icon
|
|
37
|
+
shadowSize: [43, 32], // size of the shadow
|
|
38
|
+
iconAnchor: [12, 32], // point of the icon which will correspond to marker's location
|
|
39
|
+
shadowAnchor: [12, 32], // the same for the shadow
|
|
40
|
+
popupAnchor: [12, -32], // point from which the popup should open relative to the iconAnchor
|
|
41
|
+
});
|
|
42
|
+
iconUrl = config.BMLTPlugin_images
|
|
43
|
+
? config.BMLTPlugin_images + "/SearchPoint.png"
|
|
39
44
|
: "data:image/png;base64,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";
|
|
40
45
|
var g_icon_image_searchpoimt = L.icon({
|
|
41
46
|
iconUrl: iconUrl,
|
|
42
47
|
shadowUrl: shadowUrl,
|
|
43
|
-
iconSize:
|
|
44
|
-
shadowSize:
|
|
45
|
-
iconAnchor:
|
|
46
|
-
shadowAnchor: [12, 32],
|
|
47
|
-
popupAnchor:
|
|
48
|
-
|
|
49
|
-
|
|
48
|
+
iconSize: [23, 32], // size of the icon
|
|
49
|
+
shadowSize: [43, 32], // size of the shadow
|
|
50
|
+
iconAnchor: [12, 32], // point of the icon which will correspond to marker's location
|
|
51
|
+
shadowAnchor: [12, 32], // the same for the shadow
|
|
52
|
+
popupAnchor: [12, -32], // point from which the popup should open relative to the iconAnchor
|
|
53
|
+
});
|
|
54
|
+
var gAllMarkers = []; ///< Holds all the markers.
|
|
50
55
|
var gMainMap;
|
|
51
56
|
var gTileLayer;
|
|
52
57
|
var gClusterLayer = null;
|
|
53
58
|
var gSearchPointMarker = false;
|
|
54
59
|
var gOpenMarker = false;
|
|
55
60
|
var gDiv = null;
|
|
56
|
-
|
|
57
|
-
if (!
|
|
58
|
-
|
|
59
|
-
if (
|
|
60
|
-
gDiv.style.height =
|
|
61
|
-
gDiv.style.marginBottom =
|
|
61
|
+
function createMap(inDiv, inCenter, inHidden = false) {
|
|
62
|
+
if (!inCenter) return null;
|
|
63
|
+
gDiv = inDiv;
|
|
64
|
+
if (inHidden) {
|
|
65
|
+
gDiv.style.height = "auto";
|
|
66
|
+
gDiv.style.marginBottom = "10px";
|
|
62
67
|
gMainMap = null;
|
|
63
68
|
return gDiv;
|
|
64
69
|
}
|
|
65
70
|
myOptions = {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
71
|
+
minZoom: config.minZoom,
|
|
72
|
+
maxZoom: config.maxZoom,
|
|
73
|
+
doubleClickZoom: false,
|
|
74
|
+
scrollWheelZoom: false,
|
|
70
75
|
};
|
|
71
76
|
myOptions = Object.assign(myOptions, {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
77
|
+
center: new L.latLng(inCenter.latitude, inCenter.longitude),
|
|
78
|
+
zoom: inCenter.zoom,
|
|
79
|
+
});
|
|
80
|
+
var pixel_width = inDiv.offsetWidth;
|
|
75
81
|
if (pixel_width == 0) {
|
|
76
82
|
pixel_width = inDiv.parentNode.offsetWidth;
|
|
77
83
|
}
|
|
78
|
-
var
|
|
84
|
+
var pixel_height = parseInt(
|
|
85
|
+
jQuery(inDiv).css("height").replace("px", ""),
|
|
86
|
+
);
|
|
79
87
|
if (pixel_height == 0) {
|
|
80
88
|
pixel_height = pixel_width;
|
|
81
89
|
}
|
|
82
|
-
if (pixel_height > pixel_width
|
|
83
|
-
inDiv.
|
|
90
|
+
if (pixel_height > pixel_width) {
|
|
91
|
+
jQuery(inDiv).css("height", pixel_width + "px");
|
|
84
92
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
93
|
+
gMainMap = new L.Map(inDiv, myOptions);
|
|
94
|
+
gTileLayer = L.tileLayer(config.tileUrl, config.tileOptions).addTo(
|
|
95
|
+
gMainMap,
|
|
96
|
+
);
|
|
97
|
+
gMainMap.zoomControl.setPosition("bottomright");
|
|
98
|
+
gMainMap.on("moveend", function () {
|
|
89
99
|
gTileLayer.redraw();
|
|
90
100
|
});
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
101
|
+
return gMainMap;
|
|
102
|
+
}
|
|
103
|
+
function addListener(ev, f, once) {
|
|
94
104
|
if (!gMainMap) return;
|
|
95
|
-
if (ev==
|
|
96
|
-
ev =
|
|
105
|
+
if (ev == "idle") {
|
|
106
|
+
ev = "moveend";
|
|
97
107
|
}
|
|
98
|
-
if (ev==
|
|
99
|
-
ev =
|
|
108
|
+
if (ev == "dragstart") {
|
|
109
|
+
ev = "movestart";
|
|
100
110
|
}
|
|
101
|
-
if (ev==
|
|
102
|
-
ev =
|
|
111
|
+
if (ev == "dragend") {
|
|
112
|
+
ev = "moveend";
|
|
103
113
|
}
|
|
104
|
-
|
|
114
|
+
if (once) {
|
|
105
115
|
gMainMap.once(ev, f);
|
|
106
116
|
} else {
|
|
107
117
|
gMainMap.on(ev, f);
|
|
108
118
|
}
|
|
109
|
-
return {
|
|
110
|
-
|
|
119
|
+
return { event: ev, f: f };
|
|
120
|
+
}
|
|
111
121
|
function removeListener(o) {
|
|
112
122
|
if (!gMainMap) return;
|
|
113
123
|
gMainMap.off(o.event, o.f);
|
|
114
124
|
}
|
|
115
|
-
function flyToFixedZoom(position, zoomLevel, extra=null) {
|
|
125
|
+
function flyToFixedZoom(position, zoomLevel, extra = null) {
|
|
116
126
|
if (!gMainMap) return;
|
|
117
127
|
|
|
118
128
|
const latlng = L.latLng(position.lat, position.lng);
|
|
119
|
-
|
|
129
|
+
gMainMap.once("moveend", function (ev) {
|
|
120
130
|
if (gMainMap.getZoom() != zoomLevel) {
|
|
121
|
-
gMainMap.once(
|
|
131
|
+
gMainMap.once("zoomend", function () {
|
|
122
132
|
gMainMap.invalidateSize();
|
|
123
133
|
if (extra) {
|
|
124
|
-
gMainMap.once(
|
|
134
|
+
gMainMap.once("load moveend", extra);
|
|
125
135
|
}
|
|
126
136
|
});
|
|
127
137
|
gMainMap.setZoom(zoomLevel);
|
|
@@ -131,12 +141,15 @@ function MapDelegate(config) {
|
|
|
131
141
|
});
|
|
132
142
|
gMainMap.flyTo(latlng, zoomLevel);
|
|
133
143
|
}
|
|
134
|
-
function clearAllMarkers
|
|
135
|
-
{
|
|
144
|
+
function clearAllMarkers() {
|
|
136
145
|
if (!gMainMap) return;
|
|
137
|
-
gAllMarkers &&
|
|
146
|
+
gAllMarkers &&
|
|
147
|
+
gAllMarkers.forEach((m) => {
|
|
148
|
+
m.marker.closePopup();
|
|
149
|
+
gMainMap.removeLayer(m.marker);
|
|
150
|
+
});
|
|
138
151
|
gAllMarkers = [];
|
|
139
|
-
}
|
|
152
|
+
}
|
|
140
153
|
function getZoom() {
|
|
141
154
|
if (!gMainMap) return null;
|
|
142
155
|
return gMainMap.getZoom();
|
|
@@ -146,286 +159,410 @@ function MapDelegate(config) {
|
|
|
146
159
|
}
|
|
147
160
|
function webMercatorToLatLng(point, zoom) {
|
|
148
161
|
const latLng = croutonMap.webMercatorToLatLng(point, zoom);
|
|
149
|
-
|
|
162
|
+
return L.latLng(latLng.lat, latLng.lng);
|
|
150
163
|
}
|
|
151
164
|
function calculateBounds(center, zoom, width, height) {
|
|
152
165
|
const centerPoint = croutonMap.latLngToWebMercator(center, zoom);
|
|
153
|
-
const northeastWebMercator = {
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
166
|
+
const northeastWebMercator = {
|
|
167
|
+
x: centerPoint.x - width / 2,
|
|
168
|
+
y: centerPoint.y - height / 2,
|
|
169
|
+
};
|
|
170
|
+
const southwestWebMercator = {
|
|
171
|
+
x: centerPoint.x + width / 2,
|
|
172
|
+
y: centerPoint.y + height / 2,
|
|
173
|
+
};
|
|
174
|
+
return L.latLngBounds(
|
|
175
|
+
webMercatorToLatLng(southwestWebMercator, zoom),
|
|
176
|
+
webMercatorToLatLng(northeastWebMercator, zoom),
|
|
177
|
+
);
|
|
178
|
+
}
|
|
179
|
+
function withinInscribedCircle(center, point, zoom, width, height) {
|
|
180
|
+
const centerPoint = croutonMap.latLngToWebMercator(center, zoom);
|
|
181
|
+
const meetingPoint = croutonMap.latLngToWebMercator(point, zoom);
|
|
182
|
+
const radius = Math.min(width, height) / 2;
|
|
183
|
+
const distance = Math.sqrt(
|
|
184
|
+
Math.pow(centerPoint.x - meetingPoint.x, 2) +
|
|
185
|
+
Math.pow(centerPoint.y - meetingPoint.y, 2),
|
|
186
|
+
);
|
|
187
|
+
return distance <= radius;
|
|
188
|
+
}
|
|
189
|
+
function calcOffsetWidth(gDiv) {
|
|
190
|
+
let ret = gDiv.offsetWidth;
|
|
191
|
+
if (ret === 0) ret = gDiv.parentElement.offsetWidth;
|
|
192
|
+
return ret;
|
|
193
|
+
}
|
|
162
194
|
function calculateBoundsFromCenterAndZoom(center, zoomLevel) {
|
|
163
|
-
|
|
164
|
-
const mapHeight = parseInt(
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
195
|
+
const mapWidth = calcOffsetWidth(gDiv);
|
|
196
|
+
const mapHeight = parseInt(
|
|
197
|
+
jQuery(gDiv).css("height").replace("px", ""),
|
|
198
|
+
);
|
|
199
|
+
return calculateBounds(center, zoomLevel, mapWidth, mapHeight);
|
|
200
|
+
}
|
|
201
|
+
function getZoomAdjust(
|
|
202
|
+
filterMeetings,
|
|
203
|
+
zoomLevel = gMainMap.getZoom(),
|
|
204
|
+
center = gMainMap.getCenter(),
|
|
205
|
+
closestMeeting = null,
|
|
206
|
+
) {
|
|
168
207
|
if (!gMainMap) return 12;
|
|
208
|
+
if (config.map_search && isFilterVisible()) return zoomLevel;
|
|
169
209
|
const mapWidth = calcOffsetWidth(gDiv);
|
|
170
|
-
const mapHeight = parseInt(
|
|
171
|
-
|
|
172
|
-
|
|
210
|
+
const mapHeight = parseInt(
|
|
211
|
+
jQuery(gDiv).css("height").replace("px", ""),
|
|
212
|
+
);
|
|
213
|
+
let ret = zoomLevel;
|
|
173
214
|
var bounds = calculateBounds(center, ret, mapWidth, mapHeight);
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
215
|
+
if (closestMeeting) {
|
|
216
|
+
while (
|
|
217
|
+
!withinInscribedCircle(
|
|
218
|
+
center,
|
|
219
|
+
closestMeeting,
|
|
220
|
+
ret,
|
|
221
|
+
mapWidth,
|
|
222
|
+
mapHeight,
|
|
223
|
+
) &&
|
|
224
|
+
ret > config.minZoom
|
|
225
|
+
) {
|
|
226
|
+
ret -= 1;
|
|
227
|
+
}
|
|
228
|
+
} else {
|
|
229
|
+
while (
|
|
230
|
+
filterMeetings(bounds, center).length == 0 &&
|
|
231
|
+
ret > config.minZoom
|
|
232
|
+
) {
|
|
233
|
+
ret -= 1;
|
|
234
|
+
bounds = calculateBounds(center, ret, mapWidth, mapHeight);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
// If we didn't zoom out, zoom in if it doesn't lose meetings
|
|
238
|
+
if (ret == zoomLevel) {
|
|
239
|
+
let meetingsInBounds = filterMeetings(bounds, center).length;
|
|
240
|
+
if (meetingsInBounds > 0) {
|
|
241
|
+
do {
|
|
242
|
+
ret = ret + 1;
|
|
243
|
+
if (ret > config.maxZoom) break;
|
|
244
|
+
var bounds = calculateBounds(
|
|
245
|
+
center,
|
|
246
|
+
ret,
|
|
247
|
+
mapWidth,
|
|
248
|
+
mapHeight,
|
|
249
|
+
);
|
|
250
|
+
} while (
|
|
251
|
+
filterMeetings(bounds, center).length === meetingsInBounds
|
|
252
|
+
);
|
|
253
|
+
ret = ret - 1;
|
|
254
|
+
}
|
|
177
255
|
}
|
|
178
256
|
return ret;
|
|
179
257
|
}
|
|
180
258
|
function markSearchPoint(inCoords) {
|
|
181
259
|
if (!gMainMap) return;
|
|
182
260
|
if (gSearchPointMarker) gSearchPointMarker.remove();
|
|
183
|
-
gSearchPointMarker = L.marker(inCoords, {
|
|
261
|
+
gSearchPointMarker = L.marker(inCoords, {
|
|
262
|
+
icon: g_icon_image_searchpoimt,
|
|
263
|
+
});
|
|
184
264
|
gSearchPointMarker.addTo(gMainMap);
|
|
185
265
|
}
|
|
186
|
-
function createMarker
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
{
|
|
191
|
-
|
|
192
|
-
|
|
266
|
+
function createMarker(
|
|
267
|
+
inCoords, ///< The long/lat for the marker.
|
|
268
|
+
multi, ///< Flag if marker has multiple meetings
|
|
269
|
+
in_title, ///< The tooltip
|
|
270
|
+
) {
|
|
271
|
+
if (!gMainMap) return;
|
|
272
|
+
var in_main_icon = multi ? g_icon_image_multi : g_icon_image_single;
|
|
193
273
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
274
|
+
var marker = L.marker(inCoords, {
|
|
275
|
+
icon: in_main_icon,
|
|
276
|
+
title: in_title,
|
|
277
|
+
});
|
|
278
|
+
marker.isMulti = multi;
|
|
279
|
+
if (gClusterLayer) gClusterLayer.addLayer(marker);
|
|
280
|
+
else marker.addTo(gMainMap);
|
|
198
281
|
|
|
199
|
-
|
|
200
|
-
}
|
|
201
|
-
function bindPopup(marker, in_html, in_ids, openedMarker) {
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
282
|
+
return marker;
|
|
283
|
+
}
|
|
284
|
+
function bindPopup(marker, in_html, in_ids, openedMarker) {
|
|
285
|
+
if (!in_html) return;
|
|
286
|
+
let highlightRow = function (target) {
|
|
287
|
+
const id = target.id.split("-")[1];
|
|
288
|
+
gOpenMarker = id;
|
|
289
|
+
jQuery(".bmlt-data-row > td").removeClass("rowHighlight");
|
|
290
|
+
jQuery("#meeting-data-row-" + id + " > td").addClass(
|
|
291
|
+
"rowHighlight",
|
|
292
|
+
);
|
|
293
|
+
if (typeof crouton != "undefined") crouton.dayTabFromId(id);
|
|
294
|
+
};
|
|
295
|
+
marker.bindPopup(in_html);
|
|
296
|
+
marker.on("popupopen", function (e) {
|
|
297
|
+
if (
|
|
298
|
+
openedMarker &&
|
|
299
|
+
marker
|
|
300
|
+
.getPopup()
|
|
301
|
+
.getContent()
|
|
302
|
+
.includes("panel-" + openedMarker)
|
|
303
|
+
) {
|
|
304
|
+
// I want to just do this:
|
|
305
|
+
//jQuery("#panel-"+openedMarker).prop("checked", true);
|
|
306
|
+
// But for some reason, leaflet makes a copy of the popup, so the ID is not unique....
|
|
307
|
+
jQuery("input[type=radio][name=panel]")
|
|
308
|
+
.filter(function () {
|
|
309
|
+
return (
|
|
310
|
+
jQuery(this).attr("id") == "panel-" + openedMarker
|
|
311
|
+
);
|
|
312
|
+
})
|
|
313
|
+
.each(function (index, value) {
|
|
314
|
+
jQuery(this).prop("checked", true);
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
marker.setIcon(g_icon_image_selected);
|
|
318
|
+
gMainMap.on("zoomstart", function () {
|
|
319
|
+
marker.closePopup();
|
|
320
|
+
});
|
|
321
|
+
jQuery("input[type=radio][name=panel]:checked").each(
|
|
322
|
+
function (index, target) {
|
|
323
|
+
highlightRow(target);
|
|
324
|
+
},
|
|
325
|
+
);
|
|
326
|
+
jQuery("input[type=radio][name=panel]").change(function () {
|
|
327
|
+
highlightRow(this);
|
|
220
328
|
});
|
|
221
|
-
}
|
|
222
|
-
marker.setIcon(g_icon_image_selected);
|
|
223
|
-
gMainMap.on('zoomstart',function(){
|
|
224
|
-
marker.closePopup();
|
|
225
329
|
});
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
});
|
|
233
|
-
marker.on('popupclose', function(e) {
|
|
234
|
-
gOpenMarker = false;
|
|
235
|
-
marker.setIcon(marker.isMulti ? g_icon_image_multi : g_icon_image_single);
|
|
236
|
-
jQuery(".bmlt-data-row > td").removeClass("rowHighlight");
|
|
237
|
-
});
|
|
238
|
-
if (openedMarker && in_ids.includes(parseInt(openedMarker))) {
|
|
239
|
-
marker.openPopup();
|
|
240
|
-
marker.once('add', function() {
|
|
241
|
-
if (!marker.isPopupOpen()) marker.openPopup();
|
|
330
|
+
marker.on("popupclose", function (e) {
|
|
331
|
+
gOpenMarker = false;
|
|
332
|
+
marker.setIcon(
|
|
333
|
+
marker.isMulti ? g_icon_image_multi : g_icon_image_single,
|
|
334
|
+
);
|
|
335
|
+
jQuery(".bmlt-data-row > td").removeClass("rowHighlight");
|
|
242
336
|
});
|
|
337
|
+
if (openedMarker && in_ids.includes(parseInt(openedMarker))) {
|
|
338
|
+
marker.openPopup();
|
|
339
|
+
marker.once("add", function () {
|
|
340
|
+
if (!marker.isPopupOpen()) marker.openPopup();
|
|
341
|
+
});
|
|
342
|
+
}
|
|
343
|
+
gAllMarkers.push({ ids: in_ids, marker: marker });
|
|
243
344
|
}
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
onAdd: function (map) {
|
|
345
|
+
function addMarkerCallback(marker, cb, in_ids) {
|
|
346
|
+
if (cb)
|
|
347
|
+
marker.on("click", function () {
|
|
348
|
+
cb(in_ids);
|
|
349
|
+
});
|
|
350
|
+
gAllMarkers.push({ ids: in_ids, marker: marker });
|
|
351
|
+
}
|
|
352
|
+
function getOpenMarker() {
|
|
353
|
+
return gOpenMarker;
|
|
354
|
+
}
|
|
355
|
+
function openMarker(id) {
|
|
356
|
+
if (!gMainMap) return;
|
|
357
|
+
marker = gAllMarkers.find((m) => m.ids.includes(id));
|
|
358
|
+
if (marker) {
|
|
359
|
+
marker.marker.openPopup();
|
|
360
|
+
jQuery("#panel-" + id).prop("checked", true);
|
|
361
|
+
if (typeof crouton != "undefined") crouton.dayTabFromId(id);
|
|
362
|
+
}
|
|
363
|
+
jQuery(".bmlt-data-row > td").removeClass("rowHighlight");
|
|
364
|
+
jQuery("#meeting-data-row-" + id + " > td").addClass("rowHighlight");
|
|
365
|
+
}
|
|
366
|
+
function addControl(div, pos, cb) {
|
|
367
|
+
if (!div) return;
|
|
368
|
+
if (!gMainMap) {
|
|
369
|
+
gDiv.appendChild(div);
|
|
370
|
+
return;
|
|
371
|
+
}
|
|
372
|
+
var ControlClass = L.Control.extend({
|
|
373
|
+
onAdd: function (map) {
|
|
274
374
|
return div;
|
|
275
375
|
},
|
|
276
|
-
onRemove: function(map) {
|
|
376
|
+
onRemove: function (map) {
|
|
277
377
|
// Nothing to do here
|
|
278
|
-
}
|
|
378
|
+
},
|
|
279
379
|
});
|
|
280
|
-
var controlConstructor = function(opts) {
|
|
380
|
+
var controlConstructor = function (opts) {
|
|
281
381
|
return new ControlClass(opts);
|
|
282
|
-
}
|
|
382
|
+
};
|
|
283
383
|
if (cb) {
|
|
284
384
|
const observer = new MutationObserver(function (records) {
|
|
285
|
-
records.forEach(record => {
|
|
286
|
-
record.addedNodes.forEach(n => {
|
|
385
|
+
records.forEach((record) => {
|
|
386
|
+
record.addedNodes.forEach((n) => {
|
|
287
387
|
if (n === div) {
|
|
288
388
|
observer.disconnect();
|
|
289
389
|
cb();
|
|
290
390
|
}
|
|
291
391
|
});
|
|
292
|
-
})
|
|
392
|
+
});
|
|
293
393
|
});
|
|
294
|
-
observer.observe(document, {childList: true, subtree: true});
|
|
394
|
+
observer.observe(document, { childList: true, subtree: true });
|
|
295
395
|
}
|
|
296
396
|
controlConstructor({ position: pos }).addTo(gMainMap);
|
|
297
|
-
|
|
298
|
-
|
|
397
|
+
}
|
|
398
|
+
// Low level GeoCoding
|
|
299
399
|
function getJSON(url, params, callback) {
|
|
300
400
|
var xmlHttp = new XMLHttpRequest();
|
|
301
|
-
xmlHttp.onreadystatechange = function() {
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
}
|
|
401
|
+
xmlHttp.onreadystatechange = function () {
|
|
402
|
+
if (xmlHttp.readyState !== 4) {
|
|
403
|
+
return;
|
|
404
|
+
}
|
|
405
|
+
var message;
|
|
406
|
+
if (xmlHttp.status !== 200 && xmlHttp.status !== 304) {
|
|
407
|
+
message = "";
|
|
408
|
+
} else if (typeof xmlHttp.response === "string") {
|
|
409
|
+
// IE doesn't parse JSON responses even with responseType: 'json'.
|
|
410
|
+
try {
|
|
411
|
+
message = JSON.parse(xmlHttp.response);
|
|
412
|
+
} catch (e) {
|
|
413
|
+
// Not a JSON response
|
|
414
|
+
message = xmlHttp.response;
|
|
415
|
+
}
|
|
416
|
+
} else {
|
|
417
|
+
message = xmlHttp.response;
|
|
418
|
+
}
|
|
419
|
+
callback(message);
|
|
420
|
+
};
|
|
421
|
+
xmlHttp.open("GET", url + getParamString(params), true);
|
|
422
|
+
xmlHttp.responseType = "json";
|
|
423
|
+
xmlHttp.setRequestHeader("Accept", "application/json");
|
|
424
|
+
xmlHttp.setRequestHeader("Accept", "*/*");
|
|
425
|
+
xmlHttp.send(null);
|
|
426
|
+
}
|
|
327
427
|
function getParamString(obj, existingUrl, uppercase) {
|
|
328
428
|
var params = [];
|
|
329
429
|
for (var i in obj) {
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
430
|
+
var key = encodeURIComponent(uppercase ? i.toUpperCase() : i);
|
|
431
|
+
var value = obj[i];
|
|
432
|
+
if (!L.Util.isArray(value)) {
|
|
433
|
+
params.push(key + "=" + encodeURIComponent(value));
|
|
434
|
+
} else {
|
|
435
|
+
for (var j = 0; j < value.length; j++) {
|
|
436
|
+
params.push(key + "=" + encodeURIComponent(value[j]));
|
|
437
|
+
}
|
|
337
438
|
}
|
|
338
|
-
}
|
|
339
439
|
}
|
|
340
|
-
return (
|
|
440
|
+
return (
|
|
441
|
+
(!existingUrl || existingUrl.indexOf("?") === -1 ? "?" : "&") +
|
|
442
|
+
params.join("&")
|
|
443
|
+
);
|
|
341
444
|
}
|
|
342
445
|
function geocode(query, params, cb) {
|
|
343
446
|
var serviceUrl = config.nominatimUrl;
|
|
344
|
-
if (!serviceUrl) serviceUrl =
|
|
447
|
+
if (!serviceUrl) serviceUrl = "https://nominatim.openstreetmap.org/";
|
|
345
448
|
getJSON(
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
449
|
+
serviceUrl + "search",
|
|
450
|
+
L.extend(
|
|
451
|
+
{
|
|
452
|
+
q: query,
|
|
453
|
+
limit: 5,
|
|
454
|
+
format: "json",
|
|
455
|
+
addressdetails: 1,
|
|
456
|
+
layer: "address",
|
|
457
|
+
},
|
|
458
|
+
params,
|
|
459
|
+
),
|
|
460
|
+
L.bind(function (data) {
|
|
461
|
+
if (data && data.length) {
|
|
462
|
+
results = data.reduce(function (carry, d) {
|
|
463
|
+
if (
|
|
464
|
+
!carry.find((item) => item.name === d.display_name)
|
|
465
|
+
) {
|
|
466
|
+
var bbox = d.boundingbox.map((c) => parseFloat(c));
|
|
467
|
+
carry.push({
|
|
468
|
+
name: d.display_name,
|
|
469
|
+
bbox: L.latLngBounds(
|
|
470
|
+
[bbox[0], bbox[2]],
|
|
471
|
+
[bbox[1], bbox[3]],
|
|
472
|
+
),
|
|
473
|
+
center: L.latLng(d.lat, d.lon),
|
|
474
|
+
properties: d,
|
|
475
|
+
});
|
|
476
|
+
}
|
|
477
|
+
return carry;
|
|
478
|
+
}, []);
|
|
479
|
+
cb(results);
|
|
480
|
+
} else {
|
|
481
|
+
alert(crouton.localization.getWord("address_lookup_fail"));
|
|
482
|
+
}
|
|
483
|
+
}, this),
|
|
376
484
|
);
|
|
377
|
-
|
|
485
|
+
}
|
|
378
486
|
function getGeocodingChoices(in_geocode_response) {
|
|
379
|
-
|
|
380
|
-
|
|
487
|
+
if (!Array.isArray(in_geocode_response)) return [];
|
|
488
|
+
return in_geocode_response.map((r) => r.name);
|
|
381
489
|
}
|
|
382
|
-
function getZoomAdjustedBounds(
|
|
490
|
+
function getZoomAdjustedBounds(
|
|
491
|
+
center,
|
|
492
|
+
filterMeetings,
|
|
493
|
+
zoomLevel,
|
|
494
|
+
closestMeeting = null,
|
|
495
|
+
) {
|
|
383
496
|
const mapWidth = calcOffsetWidth(gDiv);
|
|
384
|
-
const mapHeight = parseInt(
|
|
497
|
+
const mapHeight = parseInt(
|
|
498
|
+
jQuery(gDiv).css("height").replace("px", ""),
|
|
499
|
+
);
|
|
385
500
|
if (center) {
|
|
386
|
-
const zoom = getZoomAdjust(
|
|
501
|
+
const zoom = getZoomAdjust(
|
|
502
|
+
filterMeetings,
|
|
503
|
+
zoomLevel,
|
|
504
|
+
center,
|
|
505
|
+
closestMeeting,
|
|
506
|
+
);
|
|
387
507
|
const bounds = calculateBounds(center, zoom, mapWidth, mapHeight);
|
|
388
|
-
const ret = {
|
|
508
|
+
const ret = { center: center, bounds: bounds, zoom: zoom };
|
|
389
509
|
return ret;
|
|
390
510
|
} else {
|
|
391
|
-
alert
|
|
511
|
+
alert(crouton.localization.getWord("address_lookup_fail"));
|
|
392
512
|
return null;
|
|
393
513
|
}
|
|
394
514
|
}
|
|
395
|
-
function getGeocodeCenterAndBounds
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
center: {
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
515
|
+
function getGeocodeCenterAndBounds(in_geocode_response, i = 0) {
|
|
516
|
+
if (in_geocode_response && in_geocode_response[i]) {
|
|
517
|
+
return {
|
|
518
|
+
center: {
|
|
519
|
+
lat: in_geocode_response[i].center.lat,
|
|
520
|
+
lng: in_geocode_response[i].center.lng,
|
|
521
|
+
},
|
|
522
|
+
southWest: {
|
|
523
|
+
lat: in_geocode_response[i].bbox.getSouthWest().lat,
|
|
524
|
+
lng: in_geocode_response[i].bbox.getSouthWest().lng,
|
|
525
|
+
},
|
|
526
|
+
northEast: {
|
|
527
|
+
lat: in_geocode_response[i].bbox.getNorthEast().lat,
|
|
528
|
+
lng: in_geocode_response[i].bbox.getNorthEast().lng,
|
|
529
|
+
},
|
|
530
|
+
};
|
|
531
|
+
} else {
|
|
532
|
+
alert(crouton.localization.getWord("address_lookup_fail"));
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
function callGeocoder(in_loc, callback) {
|
|
407
536
|
geoCodeParams = {};
|
|
408
|
-
if (config.region && config.region.trim() !==
|
|
537
|
+
if (config.region && config.region.trim() !== "") {
|
|
409
538
|
geoCodeParams.countrycodes = config.region;
|
|
410
539
|
}
|
|
411
|
-
if (
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
540
|
+
if (
|
|
541
|
+
config.bounds &&
|
|
542
|
+
isNumber(config.bounds.north) &&
|
|
543
|
+
isNumber(config.bounds.east) &&
|
|
544
|
+
isNumber(config.bounds.south) &&
|
|
545
|
+
isNumber(config.bounds.west)
|
|
546
|
+
) {
|
|
547
|
+
geoCodeParams.viewbox =
|
|
548
|
+
config.bounds.west +
|
|
549
|
+
"," +
|
|
550
|
+
config.bounds.south +
|
|
551
|
+
"," +
|
|
552
|
+
config.bounds.east +
|
|
553
|
+
"," +
|
|
554
|
+
config.bounds.north;
|
|
418
555
|
}
|
|
419
|
-
|
|
420
|
-
|
|
556
|
+
geocode(in_loc, geoCodeParams, callback);
|
|
557
|
+
}
|
|
421
558
|
function isNumber(x) {
|
|
422
|
-
if (typeof x ===
|
|
423
|
-
if (typeof x ===
|
|
559
|
+
if (typeof x === "number") return true;
|
|
560
|
+
if (typeof x === "string" && x.trim() !== "" && !isNaN(x)) return true;
|
|
424
561
|
return false;
|
|
425
562
|
}
|
|
426
563
|
function contains(bounds, lat, lng) {
|
|
427
564
|
if (!gMainMap) return true;
|
|
428
|
-
return bounds.contains(L.latLng
|
|
565
|
+
return bounds.contains(L.latLng(lat, lng));
|
|
429
566
|
}
|
|
430
567
|
function getBounds() {
|
|
431
568
|
if (!gMainMap) return null;
|
|
@@ -437,7 +574,10 @@ function addControl(div,pos,cb) {
|
|
|
437
574
|
}
|
|
438
575
|
function fitBounds(locations) {
|
|
439
576
|
if (!gMainMap) return;
|
|
440
|
-
const bounds = locations.reduce(function(b,lat_lng) {
|
|
577
|
+
const bounds = locations.reduce(function (b, lat_lng) {
|
|
578
|
+
b.extend(lat_lng);
|
|
579
|
+
return b;
|
|
580
|
+
}, L.latLngBounds());
|
|
441
581
|
gMainMap.fitBounds(bounds);
|
|
442
582
|
}
|
|
443
583
|
function createClusterLayer() {
|
|
@@ -454,50 +594,68 @@ function addControl(div,pos,cb) {
|
|
|
454
594
|
gClusterLayer = null;
|
|
455
595
|
}
|
|
456
596
|
function clickSearch(ev, cb) {
|
|
457
|
-
L.DomUtil.addClass(gMainMap._container,
|
|
458
|
-
gMainMap.once(
|
|
459
|
-
gMainMap.once(
|
|
460
|
-
L.DomUtil.removeClass(
|
|
461
|
-
|
|
462
|
-
|
|
597
|
+
L.DomUtil.addClass(gMainMap._container, "crosshair-cursor-enabled");
|
|
598
|
+
gMainMap.once("click", function (e) {
|
|
599
|
+
gMainMap.once("click", function (e) {
|
|
600
|
+
L.DomUtil.removeClass(
|
|
601
|
+
gMainMap._container,
|
|
602
|
+
"crosshair-cursor-enabled",
|
|
603
|
+
);
|
|
604
|
+
cb(e.latlng.lat, e.latlng.lng);
|
|
605
|
+
});
|
|
463
606
|
});
|
|
464
607
|
}
|
|
465
608
|
function getCorners(lat_lngs = false) {
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
609
|
+
var bounds = lat_lngs
|
|
610
|
+
? lat_lngs.reduce(function (b, lat_lng) {
|
|
611
|
+
b.extend(lat_lng);
|
|
612
|
+
return b;
|
|
613
|
+
}, L.latLngBounds())
|
|
614
|
+
: gMainMap.getBounds();
|
|
469
615
|
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
616
|
+
return {
|
|
617
|
+
ne: {
|
|
618
|
+
lat: bounds.getNorthEast().lat,
|
|
619
|
+
lng: bounds.getNorthEast().lng,
|
|
620
|
+
},
|
|
621
|
+
sw: {
|
|
622
|
+
lat: bounds.getSouthWest().lat,
|
|
623
|
+
lng: bounds.getSouthWest().lng,
|
|
624
|
+
},
|
|
625
|
+
};
|
|
626
|
+
}
|
|
475
627
|
function getCenter() {
|
|
476
|
-
return {
|
|
628
|
+
return { lat: gMainMap.getCenter().lat, lng: gMainMap.getCenter().lng };
|
|
477
629
|
}
|
|
478
630
|
function modalOn() {
|
|
479
|
-
if (gMainMap) gMainMap.dragging.disable()
|
|
631
|
+
if (gMainMap) gMainMap.dragging.disable();
|
|
480
632
|
}
|
|
481
633
|
function modalOff() {
|
|
482
|
-
if (gMainMap) gMainMap.dragging.enable()
|
|
634
|
+
if (gMainMap) gMainMap.dragging.enable();
|
|
483
635
|
}
|
|
484
636
|
function afterInit(doNotWait, f) {
|
|
485
637
|
f();
|
|
486
638
|
}
|
|
487
|
-
function returnTrue() {
|
|
639
|
+
function returnTrue() {
|
|
640
|
+
return true;
|
|
641
|
+
}
|
|
488
642
|
function isMapDefined() {
|
|
489
|
-
return
|
|
643
|
+
return gMainMap !== null;
|
|
490
644
|
}
|
|
491
645
|
function isMapVisible() {
|
|
492
|
-
return (
|
|
646
|
+
return (
|
|
647
|
+
gMainMap !== null &&
|
|
648
|
+
gMainMap.getSize().x > 0 &&
|
|
649
|
+
gMainMap.getSize().y > 0
|
|
650
|
+
);
|
|
493
651
|
}
|
|
494
|
-
|
|
495
|
-
|
|
652
|
+
this.createMap = createMap;
|
|
653
|
+
this.addListener = addListener;
|
|
496
654
|
this.removeListener = removeListener;
|
|
497
|
-
|
|
655
|
+
this.addControl = addControl;
|
|
498
656
|
this.flyToFixedZoom = flyToFixedZoom;
|
|
499
|
-
|
|
500
|
-
|
|
657
|
+
this.clearAllMarkers = clearAllMarkers;
|
|
658
|
+
this.callGeocoder = callGeocoder;
|
|
501
659
|
this.getZoomAdjustedBounds = getZoomAdjustedBounds;
|
|
502
660
|
this.getZoom = getZoom;
|
|
503
661
|
this.createMarker = createMarker;
|
|
@@ -560,6 +718,7 @@ MapDelegate.prototype.getCenter = null;
|
|
|
560
718
|
MapDelegate.prototype.markSearchPoint = null;
|
|
561
719
|
MapDelegate.prototype.getOpenMarker = null;
|
|
562
720
|
MapDelegate.prototype.calculateBoundsFromCenterAndZoom = null;
|
|
721
|
+
|
|
563
722
|
/* @preserve
|
|
564
723
|
* Leaflet 1.9.4+v1.d15112c, a JS library for interactive maps. https://leafletjs.com
|
|
565
724
|
* (c) 2010-2023 Vladimir Agafonkin, (c) 2010-2011 CloudMade
|