@mapsindoors/map-template 1.95.0 → 1.95.2
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/dist/{GoogleMapsMap-BIUan6Mh.mjs → GoogleMapsMap-Dkn60-_e.mjs} +2 -2
- package/dist/{MapboxMap-BwTFmd5b.mjs → MapboxMap-B1oo7IUm.mjs} +3 -3
- package/dist/_commonjsHelpers-B85MJLTf.js +5 -0
- package/dist/app-globals-DQuL1Twl.js +3 -0
- package/dist/combo-box-item.entry.js +8 -10
- package/dist/icon-DT_sDkmK.js +11 -0
- package/dist/index-BZQHyS7V.js +1701 -0
- package/dist/loader.js +7 -14
- package/dist/mapsindoors-react.es.js +1 -1
- package/dist/mapsindoors-react.umd.js +175 -175
- package/dist/mapsindoors-webcomponent.es.js +2919 -2907
- package/dist/mi-card_2.entry.js +23 -18
- package/dist/mi-chip.entry.js +25 -16
- package/dist/mi-column.entry.js +47 -23
- package/dist/mi-combo-box.entry.js +412 -379
- package/dist/mi-components.js +15 -12
- package/dist/mi-data-table.entry.js +298 -278
- package/dist/mi-distance_2.entry.js +58 -56
- package/dist/mi-dropdown-item.entry.js +8 -10
- package/dist/mi-dropdown.entry.js +525 -481
- package/dist/mi-floor-selector.entry.js +183 -180
- package/dist/mi-keyboard.entry.js +207 -186
- package/dist/mi-list-item-category.entry.js +44 -41
- package/dist/mi-list-item-location.entry.js +168 -162
- package/dist/mi-list.entry.js +56 -48
- package/dist/mi-location-booking.entry.js +320 -295
- package/dist/mi-location-info.entry.js +61 -53
- package/dist/mi-map-googlemaps.entry.js +369 -324
- package/dist/mi-map-mapbox.entry.js +502 -439
- package/dist/mi-metric-card.entry.js +50 -37
- package/dist/mi-my-position.entry.js +2341 -874
- package/dist/mi-notification.entry.js +112 -102
- package/dist/mi-route-instructions-heading.entry.js +70 -65
- package/dist/mi-route-instructions-maneuver-legacy.entry.js +80 -76
- package/dist/mi-route-instructions-maneuver.entry.js +80 -76
- package/dist/mi-route-instructions-step-legacy.entry.js +296 -282
- package/dist/mi-route-instructions-step.entry.js +313 -292
- package/dist/mi-route-instructions.entry.js +167 -150
- package/dist/mi-scroll-buttons.entry.js +104 -98
- package/dist/mi-search.entry.js +366 -325
- package/dist/mi-share-sms.entry.js +82 -70
- package/dist/mi-step-switcher.entry.js +34 -25
- package/dist/mi-tab-panel.entry.js +18 -18
- package/dist/mi-tab.entry.js +5 -7
- package/dist/mi-tabs.entry.js +42 -40
- package/dist/mi-time.entry.js +49 -49
- package/dist/mi-variables-CDNvnTkH.js +5 -0
- package/dist/{reactcomponent-D3K1zzGs.mjs → reactcomponent-2Oa1vSiK.mjs} +8996 -8660
- package/dist/route-travel-mode.enum-BvqP1fpw.js +9 -0
- package/dist/sort-order.enum-jsLAbYWg.js +566 -0
- package/dist/{unit-system.enum-eaefb53e.js → unit-system.enum-BwPgAWqL.js} +2 -2
- package/dist/utils-DNHzysQ6.js +61 -0
- package/package.json +1 -1
- package/dist/_commonjsHelpers-ba3f0406.js +0 -21
- package/dist/icon-b8d01d6f.js +0 -24
- package/dist/index-7e9696f3.js +0 -1678
- package/dist/mi-variables-9a6c8d4d.js +0 -6
- package/dist/polyfills/core-js.js +0 -11
- package/dist/polyfills/css-shim.js +0 -1
- package/dist/polyfills/dom.js +0 -79
- package/dist/polyfills/es5-html-element.js +0 -1
- package/dist/polyfills/index.js +0 -34
- package/dist/polyfills/system.js +0 -6
- package/dist/route-travel-mode.enum-7f4ce9c7.js +0 -9
- package/dist/sort-order.enum-64ce8998.js +0 -552
- package/dist/utils-ae714467.js +0 -61
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { r as registerInstance, c as createEvent, h, H as Host } from './index-
|
|
2
|
-
import { m as miVariables } from './mi-variables-
|
|
1
|
+
import { r as registerInstance, c as createEvent, h, H as Host } from './index-BZQHyS7V.js';
|
|
2
|
+
import { m as miVariables } from './mi-variables-CDNvnTkH.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Create a new instance of the MapsIndoors Floor-selector map control.
|
|
@@ -8,27 +8,27 @@ import { m as miVariables } from './mi-variables-9a6c8d4d.js';
|
|
|
8
8
|
* @class FloorSelectorControl
|
|
9
9
|
*/
|
|
10
10
|
class FloorSelectorControl {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
11
|
+
constructor(map, mapsIndoorsInstance) {
|
|
12
|
+
this.map = map;
|
|
13
|
+
this.floorSelectorElement = document.createElement('div');
|
|
14
|
+
this.floorSelectorInstance = new mapsindoors.FloorSelector(this.floorSelectorElement, mapsIndoorsInstance);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Triggered by mapbox when added to the map.
|
|
18
|
+
* @returns {HTMLDivElement} The Floor Selector control element.
|
|
19
|
+
*/
|
|
20
|
+
onAdd() {
|
|
21
|
+
this.floorSelectorElement.classList.add('mapboxgl-ctrl');
|
|
22
|
+
return this.floorSelectorElement;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Remove element and clean up references
|
|
26
|
+
* Triggered by mapbox when removed from the map.
|
|
27
|
+
*/
|
|
28
|
+
onRemove() {
|
|
29
|
+
this.floorSelectorElement.parentNode.removeChild(this.floorSelectorElement);
|
|
30
|
+
this.map = undefined;
|
|
31
|
+
}
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
/**
|
|
@@ -38,430 +38,493 @@ class FloorSelectorControl {
|
|
|
38
38
|
* @class MyPositionControl
|
|
39
39
|
*/
|
|
40
40
|
class MyPositionControl {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
41
|
+
constructor(map, mapsIndoorsInstance) {
|
|
42
|
+
this.map = map;
|
|
43
|
+
this.myPositionControlElement = document.createElement('div');
|
|
44
|
+
this.myPositionControlInstance = new mapsindoors.PositionControl(this.myPositionControlElement, {
|
|
45
|
+
mapsIndoors: mapsIndoorsInstance,
|
|
46
|
+
positionOptions: {
|
|
47
|
+
enableHighAccuracy: false,
|
|
48
|
+
maximumAge: 300000,
|
|
49
|
+
timeout: 10000
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Triggered by mapbox when added to the map.
|
|
55
|
+
* @returns {HTMLDivElement} The My Position control element.
|
|
56
|
+
*/
|
|
57
|
+
onAdd() {
|
|
58
|
+
this.myPositionControlElement.classList.add('mapboxgl-ctrl');
|
|
59
|
+
return this.myPositionControlElement;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Remove element and clean up references
|
|
63
|
+
* Triggered by mapbox when removed from the map.
|
|
64
|
+
*/
|
|
65
|
+
onRemove() {
|
|
66
|
+
this.myPositionControlElement.parentNode.removeChild(this.myPositionControlElement);
|
|
67
|
+
this.map = undefined;
|
|
68
|
+
}
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
const mapMapboxCss = ":host{display:block}:host>div{height:100%}.mapsindoors.floor-selector{border-radius:2px;box-shadow:0 1px 2px 0 rgba(0, 0, 0, 0.3);width:40px;font-family:Figtree, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen, Ubuntu, Cantarell, \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";-webkit-user-select:none;-moz-user-select:none;user-select:none;font-size:18px}.mapsindoors.floor-selector a{position:relative;display:block;float:none;margin-top:-1px;text-align:center;cursor:pointer;border-radius:2px;background:#fff;z-index:0;height:40px;line-height:40px}.mapsindoors.floor-selector a:hover{background:#ddd;border-color:#999;z-index:2}.mapsindoors.floor-selector a.active{background:#ddd;border-color:#00b1ff;z-index:2}.mapsindoors.floor-selector a:not(:first-child):not(:last-child){border-radius:0}.mapsindoors.floor-selector a:first-child:not(:last-child){border-top-right-radius:2px;border-bottom-right-radius:0;border-bottom-left-radius:0}.mapsindoors.floor-selector a:last-child:not(:first-child){border-top-right-radius:0;border-bottom-left-radius:2px;border-top-left-radius:0}.mapsindoors.position-control__button{border:none;margin:0;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;width:40px;height:40px;background-color:transparent;background-size:cover;outline:none;box-shadow:0px 4px 4px rgba(0, 0, 0, 0.16), 0px 2px 2px rgba(0, 0, 0, 0.18), 0px 1px 1px rgba(0, 0, 0, 0.2);border-radius:50%}.mapsindoors.position-control__button--unknown{background-image:url(data:image/png;base64,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)}.mapsindoors.position-control__button--requesting{background-image:url(data:image/png;base64,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)}.mapsindoors.position-control__button--known{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAbXSURBVHgB7Z3faxxVFMdPxFdD89xgJw+K2SKxICYi4gbTFBFs0qSIIDSJFlGoSYhV35KgD4JIGguCiEkEQSTbJC2U0kRJQCSpIKZIN+LLTiA+N6x/wPV+58c6c3dmf865s78+cDsz3SSz8917zz33nDOzbRQjQogTcpOUzZCtx9kazsuG8uPHspme7aFsO7Ltt7W1HVNMtJFGPIK9JNsQ5YtUKSbZYt7ENk5BWZDCJWVbl+2h0MOybENUz6C3yTarUbQgMrKNyWZQvSBqQziVjGyzVOsI+9POiNolI9sY1RryTRmybYv6AfbYoFpAvpFJUVvDtVTwnscoLoRt6xZE/bNAVVCRHyjs7r8u2zPUGOzLNiz9R5PKpGwBHfG2KTonuFYwZesvV8SyBGxg8VxMKlPEkgVsAvFcTCpDxJIEbCLxXEwqUcRSBfyDGmfCKBVMLP3FAhOPUBGcab7ZxAO45qLLv4I9UNiO5jI1N9OyF14LezFUQMfuYeieoOYGQ/hMmD0sJCAc5dhiaqe6nvQdH2b+phhBkLY/6IVAG+gM3foOSEZLUoSsm8MmkdqPnelnVtgpCR95Ago78GhQCxVDtin1P302ME6H+ejoiO5u/kTpgwNKp/+S7cD3eiLRTZ2dJ2nw7AA939dr7ccAJpQur2+oCjhGmt2WVGqNVm+s0d7eb2X9Xl/fczQ6coEujl4gzcxLAefcA1XADGnqfXt792jm6sey5/1D1YCeODV5RaeQx1LADvcgJ6Cw04DrxEw2+y8tLH5JS0vfUZRMTFyi6cn3qb39MdIAlng72PEKiKE7Roygt11+5708++bS19tLg4MvOzauMycGRE+n0/RA/t7m1s9W7w0CvfHHH77XYR83pIDD2LEEdKbnh8QIxHv9jTcDh+xbE2M0MX6p5AvH31i4dp1S0naqaBIxN5m4ArIOX/SgV159LU88XOQ3X39lzbCVEPah4O9BRObhjBTAhusHnidGYPPUi4TRv3P7VsXiAXwAd27flMN+wPf/MBE4JzPJ3J5gTIavrt4QjxtP+Nrbl98VUTPzwYd559nd3ROMwGOhNsFs/154sd/X++xecyvy4ZXNZqWZOJ93rl9/2SZGOjCE2YKlcJLVoctlm9rb2y176gXnXk2tESNJCJgkJlaVWRIrB87ZEfYUs7mXoJk6QgwIaBAD+PTV5dn01BXiBi6RF7yHalc7BeiBgKeIAdXZ7dMUAMA5sE72giAFE1YPZAnZ393a8h0jiqIL9VxhK58I4B3CXk4nniJdYCnoBSEyLuDGCIoANYeh8uf933Ut9C2X5umeZwv+TFQ5lqJ54ajQJZ59rnbShTYBGxVtAiKgoO9cWdLFo2QX0hhUJapNQfQFuQ0XTCoJTRNJUD4FQQcGjtl6YKI74TveDQmCcvBAEbDzZCcxYUJAkxhQe9um4hdysrnld5wR5WbC6oGHxMC5wbO+Y+YlVY6gJaTqF0aI1QP3iYGgJdW3yyvEjRpIZV5CHrINYXBxxJ9qRCaOcVll9b5Uyp+ZGB0ZJkZ2Giigmp930RJQdcoUTGLii88/8x3jAuc/+ZSiZubqR3k2Fgl3Rkxo57oxLE4SgA3KC3LKYYb8cBTONf4GKhw2lZAV4oLM1Qo7+EdTWjNrpR+9jjWoNocLe4oPIihdymEmFKy0pjexjiwTWzlvocT66OiwVZZRTmIdM3pQeYjG6oSOXGIdCA0lvYVEBHB7EAw9LZdeiUTCV9qB8jesZuAkh1VyYcmGxJIG8VakeOPY8QqYJLs2kBUMZ5RlLC1HW1wEm4dJQ1PYzBq+2FHL2+DOaKnKR8pzYfF6JOVtmOn7+FYbKph9u9wDVcA50lwfbRdYrodWXIWBSi7YzhgKLMelgCvugSog+2QShr2GvWdl0LCv5jES3d2WjUOQ4tzggFX+FgMmKffQ5d0nEkcvDKLG7hNx8ZX3gqB4IG5rMqmFiqmKB/IEdJZ289RCJVCTwIi0YyR3qIXLhnfi8NK62bA4BW82DM2JOL/QGsr27a5m2IsFk0rOfbKL1Lwshg1dl6K3/Du+IZZ4TXfLvxTvTLEfKprWdGZlxMVNah5Msq+5KK3HnuRjUtSPPXFpAhFN4nrwjksDi2hSBY9+Kru0wzkBnh/Akk+OCfcZMSaVSUW1MTiRM0M1gouDa6hIvEgQ9mM/6/UBjFNUCwj7EaDron7YFrX4ZF/ReghtNMg3OSdqS0gMV7yn+gmMCHtYx90j60+4IOQFDMm2IvQA0WCPk6SBsh3pahD/fxkBEvj4QgKDosEk54sISPOXEWgVUMURFFGeJNn37BlkB3DdrRfTs0W772xj/faG/wAnZe5yTgwtRAAAAABJRU5ErkJggg==)}.mapsindoors.position-control__button--centered{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAYAAACOEfKtAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAe3SURBVHgB7Z1PbBRVHMd/bYTy3xb8Q9sQhkDoQQgSC0fcXvRgwHIreGlNCEYPIoSbyVLjUYocNBIS4ULpraXEg152wxFrwACHNmCnEhY1CJU/AmIcf9/5U2bevje7sztvdre7n+R1d2e7OzPf+b3f7/d+b2a2iSqIZVmt/JDiZnDb4j4a7tuG8O+z3Ezf4wy3LLfLTU1Ns1QhmihBfIK9ya2X8kUqFZMcMc/hsZKCaoGFS3Eb5XbPSoZT3HqploG1cUsnKJqMaW793AyqFazqEE5kmluaqh3LOdrTVvUyza2fqg3eKINbxqod4I8NqgZ4Qz62qqu7Fgu2uZ8qheX4umNW7XOMyqCkPNByzH+U2+s0P7jMbTfnjyZFJLKArngZii8JrhZMbj1RRYwk4DwWz8OkiCIWLWAdiOdhUgQRixKwjsTzMKlIEYsV8BLNn4BRLAgsPYUKE81UADfM15t4APtccPgXaoGWk2ieovrmE7bCL1VvKgV0/R66bivVN+jCW1X+MExAJMoVq6ltPTgVeH1paCNVEBRpe2RvSH2g23VruyAZLylLMW5WBZHqr50lT9pypiQC5AloOYVHgxqIGNwOiAsDPrCSCXPu7r+UufqApm49pclb/9Bk7kng/a6ORdSx8gVKbV5G3euX2M8rAALKOn9uKArYTwmnLeM/3qfzF+/TxI2/I30OIu7cvoJ2bVtBCTPIAh7xXogCTlNC1jdx/TGlR27bllcOHSsX0P63VyUp5CwL2Oa9mBPQcqYBR0kzDx7/Rye+/5POXLhHcfLejlYW8iVavrjg4CoOMMTL4olfQHTdftJI7u4zOngqxz7uqfT9NzYsoZ7XllL3hsVsWQvnxIDok7ee2J/LXHtEP12Xd3dY48kP1yThH8dYwN14Ygvohud4TUIA4u37+qa0y+7d0cYW1Fb0juO7vmErPs/+UyQhEeeCiSeg1u4LC+o7auaJh50dGuigrs4WKgXVQenqaKGTH63R3Z0xBTDmreFd0gh8nriTO9npjxxaW7J4AAdg5JBBPZuWBpZP5p7yOu+QZlL40+x/oQOkKWLAwA5/tmd1LBaC7xh6v9M+IH7OXJjlSB8tNYqIbXTNrv8zSBOiJcBqBve0U9wc7n0lz++lR34njeBkglasUVuxFNYndl04+DDLQ36YufqQslceUu7eM3sZRiFdnQvtNEUVHGxLZH/ad/TXuWXwkdgGjTliCluTIk1ghOEHO6ISICw/xLAODWKE5XtdnYvsiD7s+47zF//SKaCBrTBIAzj64vAMOy4D4iGaFpNcw7ft++qm/RkZENjPxI3HZY92QtgCAdeSBrDhfpAkq6wPlqdKrmWERVn42O71iwPLUKTQhG2BWkr2GfZhfsRUwwOWWsqwLizKomLjZyrCwYmIvi582w0AHkhuZWBEUSqZq4+ky1Gp8QOL1QX6VCwWKM5hiMDBy5gqY+eyHK0P976ctxzd2A/cg6Y5FiOR0gVQpS6TZXQvdP8o69JBcmuapyQmoCrtKKdqohpHq9alA2y9STEEEtGn9B2dCXRPdDfZDqc2LQ8kvlFQBSbRLWC9KFxoYFabBW4Udk4156FKb4pBlZiLE1LtbQtIEyYENEkDorVlhbzQo5sTbAy/orI3pACbvRJMb3o2LSNN2BY4QxoQNzpsSPUBTwqpuqMMHBx8RoZsCImDpAnbAi+TBmRDquELd6X/i7QDFeRiLBH/E1bRERPzsCFkDMx4QUQLO7e9GBgTY/iFZbJgAkGQFKMYABEwevCGYO18MGDR8Jdh1gTrE+dJdnVrne7MNumeUHrn818CXdcpw6+NPdmVzbtgXd99uo400tbsnqZgkiYG+1YHXsNKvhj7g+ImfTZ/kn7/W6tIIya088zgHGlCFmVRGD34bS6WhBffkT77W15hAevctV1v98WfZv8LXciiLMr2SLbLKXYiYUa3HRf8HrquKkrHiG10/ol1nBej7XTesIl1lNzD5jtk3zXMAUlWR0zw7IS2uYl1kMQpvWEiAtTxUpuXupNILYFTO7z8DkmyalSDzwwNdCYh3mkWbwBP/AKmyDk3UCsQA2nKcMwnF8HnodsmVMqyz0rAE/H0NuxVImflj/OM3Ykf7sRyettg36s6RxsiiL5zuZEo4BFK+PxoCDk+cV95xpUKjDCQJGuOtDIGWMDT3gtRQO3BRIXt4zCpfu2h/VycCNrI/g0+rqu9hXp40kgs2yeEScI1dHnXiVTCCmVU2XUiHoHTe4HM4+KyJpMaiJiieCBPQHdoN0gNRKSaSGO+6ySz1MBjzB84/DQuNixM6MWGyqzT/UCjKzuXu5qqN0PTdvc62eNUvxxXdV2Pgpf8u7khhnh1d8k/i7e10D8VHDi6URnXRJhUP5jk7HNBGrc9ycekuG974tG48U4+jVs/PcekEm79FLl45q4A9w/QMp9cIbx7xJgUkZKqj1iRG6HmQ4qDfShJvFiwnNt+1uoNGA9QNWA5twAdtWqHjFWNd/a1GjehjQfeyCNWdQmJ7optqp3CiOV060pbZO0JJ4N3oJfbaSsZIBr8cYoSoKSb0JaK9fzHCDCBjx8kMCgeTHJ/iIAS/jGCRAUUcQVFlSdFzjV7BjkFXO/Rj+l7RPvZfazorzf8DzVpOVIMfwU5AAAAAElFTkSuQmCC)}";
|
|
71
|
+
const mapMapboxCss = () => `:host{display:block}:host>div{height:100%}.mapsindoors.floor-selector{border-radius:2px;box-shadow:0 1px 2px 0 rgba(0, 0, 0, 0.3);width:40px;font-family:Figtree, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";-webkit-user-select:none;-moz-user-select:none;user-select:none;font-size:18px}.mapsindoors.floor-selector a{position:relative;display:block;float:none;margin-top:-1px;text-align:center;cursor:pointer;border-radius:2px;background:#fff;z-index:0;height:40px;line-height:40px}.mapsindoors.floor-selector a:hover{background:#ddd;border-color:#999;z-index:2}.mapsindoors.floor-selector a.active{background:#ddd;border-color:#00b1ff;z-index:2}.mapsindoors.floor-selector a:not(:first-child):not(:last-child){border-radius:0}.mapsindoors.floor-selector a:first-child:not(:last-child){border-top-right-radius:2px;border-bottom-right-radius:0;border-bottom-left-radius:0}.mapsindoors.floor-selector a:last-child:not(:first-child){border-top-right-radius:0;border-bottom-left-radius:2px;border-top-left-radius:0}.mapsindoors.position-control__button{border:none;margin:0;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;width:40px;height:40px;background-color:transparent;background-size:cover;outline:none;box-shadow:0px 4px 4px rgba(0, 0, 0, 0.16), 0px 2px 2px rgba(0, 0, 0, 0.18), 0px 1px 1px rgba(0, 0, 0, 0.2);border-radius:50%}.mapsindoors.position-control__button--unknown{background-image:url(data:image/png;base64,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)}.mapsindoors.position-control__button--requesting{background-image:url(data:image/png;base64,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)}.mapsindoors.position-control__button--known{background-image:url(data:image/png;base64,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)}.mapsindoors.position-control__button--centered{background-image:url(data:image/png;base64,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)}`;
|
|
72
72
|
|
|
73
73
|
const MapMapbox = class {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
newBearing = 0; // Setting the DOM attribute to "0" will be passed on here as null, so we need to circumvent that.
|
|
168
|
-
}
|
|
169
|
-
this.mapboxInstance.setBearing(newBearing);
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
pitchChange(newPitch, oldPitch) {
|
|
173
|
-
if (newPitch !== oldPitch && newPitch !== this.mapboxInstance.getPitch()) {
|
|
174
|
-
if (newPitch === null) {
|
|
175
|
-
newPitch = 0; // Setting the DOM attribute to "0" will be passed on here as null, so we need to circumvent that.
|
|
176
|
-
}
|
|
177
|
-
this.mapboxInstance.setPitch(newPitch);
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
/**
|
|
181
|
-
* Get the map instance.
|
|
182
|
-
* @returns {Promise<any>}
|
|
183
|
-
*/
|
|
184
|
-
async getMapInstance() {
|
|
185
|
-
return Promise.resolve(this.mapboxInstance);
|
|
186
|
-
}
|
|
187
|
-
/**
|
|
188
|
-
* Get the MapsIndoors instance.
|
|
189
|
-
* @returns {Promise<any>}
|
|
190
|
-
*/
|
|
191
|
-
async getMapsIndoorsInstance() {
|
|
192
|
-
return Promise.resolve(this.mapsIndoorsInstance);
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* Get the MapsIndoors Directions Service Instance.
|
|
196
|
-
* @returns {Promise<any>}
|
|
197
|
-
*/
|
|
198
|
-
async getDirectionsServiceInstance() {
|
|
199
|
-
return Promise.resolve(this.directionsServiceInstance);
|
|
200
|
-
}
|
|
201
|
-
/**
|
|
202
|
-
* Get the MapsIndoors Directions Renderer Instance.
|
|
203
|
-
* @returns {Promise<any>}
|
|
204
|
-
*/
|
|
205
|
-
async getDirectionsRendererInstance() {
|
|
206
|
-
return Promise.resolve(this.directionsRendererInstance);
|
|
207
|
-
}
|
|
208
|
-
/**
|
|
209
|
-
* Highlight a MapsIndoors location. Only a single location can be highlighted at the time.
|
|
210
|
-
* @param {Location} location
|
|
211
|
-
* @returns {Promise<void>}
|
|
212
|
-
*/
|
|
213
|
-
async highlightLocation(location) {
|
|
214
|
-
// Return if polygonHighlightOptions is undefined
|
|
215
|
-
if (!this.polygonHighlightOptions)
|
|
216
|
-
return;
|
|
217
|
-
// Return if already highlighted
|
|
218
|
-
if (this.highlightedLocationId && this.highlightedLocationId === location.id)
|
|
219
|
-
return;
|
|
220
|
-
// Remove previous highlight
|
|
221
|
-
if (this.highlightedLocationId) {
|
|
222
|
-
this.mapsIndoorsInstance.setDisplayRule(this.highlightedLocationId, null);
|
|
223
|
-
}
|
|
224
|
-
this.mapsIndoorsInstance.setDisplayRule(location.id, {
|
|
225
|
-
polygonVisible: true,
|
|
226
|
-
polygonZoomFrom: '0',
|
|
227
|
-
polygonZoomTo: '22',
|
|
228
|
-
zIndex: 1000,
|
|
229
|
-
polygonFillColor: this.polygonHighlightOptions.fillColor,
|
|
230
|
-
polygonFillOpacity: this.polygonHighlightOptions.fillOpacity,
|
|
231
|
-
polygonStrokeColor: this.polygonHighlightOptions.strokeColor,
|
|
232
|
-
polygonStrokeOpacity: this.polygonHighlightOptions.strokeOpacity,
|
|
233
|
-
polygonStrokeWeight: this.polygonHighlightOptions.strokeWeight
|
|
234
|
-
});
|
|
235
|
-
this.highlightedLocationId = location.id;
|
|
236
|
-
}
|
|
237
|
-
/**
|
|
238
|
-
* Clear existing MapsIndoors location highlight.
|
|
239
|
-
* @returns {Promise<void>}
|
|
240
|
-
*/
|
|
241
|
-
async clearHighlightLocation() {
|
|
242
|
-
if (this.highlightedLocationId) {
|
|
243
|
-
this.mapsIndoorsInstance.setDisplayRule(this.highlightedLocationId, null);
|
|
244
|
-
this.highlightedLocationId = null;
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
async componentDidLoad() {
|
|
248
|
-
await this.insertMapBoxScript();
|
|
249
|
-
await this.initializeMapsIndoorsSDK();
|
|
250
|
-
await this.setupMap();
|
|
251
|
-
this.setExternalLinkBehavior(this.disableExternalLinks);
|
|
252
|
-
this.addEventListeners();
|
|
253
|
-
if (this.floorSelectorControlPosition) {
|
|
254
|
-
this.showFloorSelector();
|
|
255
|
-
}
|
|
256
|
-
if (this.myPositionControlPosition) {
|
|
257
|
-
this.setMyPositionControl(this.myPositionControlPosition);
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
disconnectedCallback() {
|
|
261
|
-
this.mapsIndoorsInstance.deallocate();
|
|
262
|
-
this.mapElement.remove();
|
|
263
|
-
this.mapElement = null;
|
|
264
|
-
}
|
|
265
|
-
/**
|
|
266
|
-
* Inject script tag for Mapbox API onto the page.
|
|
267
|
-
*
|
|
268
|
-
* @returns {Promise<void>}
|
|
269
|
-
*/
|
|
270
|
-
insertMapBoxScript() {
|
|
271
|
-
if (typeof (mapboxgl) === 'undefined') {
|
|
272
|
-
return new Promise(resolve => {
|
|
273
|
-
const mapboxApiTag = document.createElement('script');
|
|
274
|
-
mapboxApiTag.setAttribute('type', 'text/javascript');
|
|
275
|
-
// When upgrading the version please remember to update url to the MapBox css in the render function.
|
|
276
|
-
mapboxApiTag.setAttribute('src', 'https://api.mapbox.com/mapbox-gl-js/v2.3.0/mapbox-gl.js');
|
|
277
|
-
document.body.appendChild(mapboxApiTag);
|
|
278
|
-
mapboxApiTag.onload = () => resolve();
|
|
279
|
-
});
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
/**
|
|
283
|
-
* Ensure that MapsIndoors Web SDK is available.
|
|
284
|
-
*
|
|
285
|
-
* @returns {Promise<void>}
|
|
286
|
-
*/
|
|
287
|
-
initializeMapsIndoorsSDK() {
|
|
288
|
-
return new Promise((resolve) => {
|
|
289
|
-
if (typeof mapsindoors !== 'undefined') {
|
|
290
|
-
mapsindoors.MapsIndoors.setMapsIndoorsApiKey(this.miApiKey);
|
|
291
|
-
mapsindoors.MapsIndoors.setLanguage(this.language);
|
|
292
|
-
return resolve();
|
|
293
|
-
}
|
|
294
|
-
const miSdkApiTag = document.createElement('script');
|
|
295
|
-
miSdkApiTag.setAttribute('type', 'text/javascript');
|
|
296
|
-
miSdkApiTag.setAttribute('src', `${miVariables.miSDKUrlV4}?apikey=${this.miApiKey}`);
|
|
297
|
-
document.body.appendChild(miSdkApiTag);
|
|
298
|
-
miSdkApiTag.onload = () => resolve();
|
|
299
|
-
});
|
|
300
|
-
}
|
|
301
|
-
/**
|
|
302
|
-
* Start MapBox and MapsIndoors.
|
|
303
|
-
*/
|
|
304
|
-
setupMap() {
|
|
305
|
-
return new Promise((resolve) => {
|
|
306
|
-
const mapViewOptions = {
|
|
307
|
-
accessToken: this.accessToken,
|
|
308
|
-
element: this.mapElement,
|
|
309
|
-
zoom: this.zoom,
|
|
310
|
-
maxZoom: this.maxZoom,
|
|
311
|
-
maxPitch: this.maxPitch,
|
|
312
|
-
bearing: this.bearing,
|
|
313
|
-
pitch: this.pitch
|
|
314
|
-
};
|
|
315
|
-
const mapViewInstance = new mapsindoors.mapView.MapboxView(mapViewOptions);
|
|
316
|
-
this.mapboxInstance = mapViewInstance.getMap();
|
|
317
|
-
this.mapsIndoorsInstance = new mapsindoors.MapsIndoors({
|
|
318
|
-
mapView: mapViewInstance,
|
|
319
|
-
labelOptions: {
|
|
320
|
-
pixelOffset: { width: 0, height: 14 },
|
|
321
|
-
style: {
|
|
322
|
-
fontSize: '11px'
|
|
323
|
-
}
|
|
74
|
+
constructor(hostRef) {
|
|
75
|
+
registerInstance(this, hostRef);
|
|
76
|
+
this.mapsIndoorsReady = createEvent(this, "mapsIndoorsReady", 7);
|
|
77
|
+
/**
|
|
78
|
+
* The MapsIndoors API key.
|
|
79
|
+
* @type {string}
|
|
80
|
+
*/
|
|
81
|
+
this.miApiKey = '';
|
|
82
|
+
/**
|
|
83
|
+
* Set to true to prevent external links on the map from opening.
|
|
84
|
+
* This can be useful when running the map on a kiosk where you never want the browser to navigate away.
|
|
85
|
+
* @type {boolean}
|
|
86
|
+
*/
|
|
87
|
+
this.disableExternalLinks = false;
|
|
88
|
+
/**
|
|
89
|
+
* Styling of polygon highlight when a location is clicked.
|
|
90
|
+
* Set it to null to turn off highlighting.
|
|
91
|
+
* @type {object}
|
|
92
|
+
*/
|
|
93
|
+
this.polygonHighlightOptions = {
|
|
94
|
+
strokeColor: '#EF6CCE',
|
|
95
|
+
strokeOpacity: 1,
|
|
96
|
+
strokeWeight: 2,
|
|
97
|
+
fillColor: '#EF6CCE',
|
|
98
|
+
fillOpacity: 0.2
|
|
99
|
+
};
|
|
100
|
+
/**
|
|
101
|
+
* Styling of how the polyline looks when getting a route.
|
|
102
|
+
* Color: The stroke color of direction polyline on the map. Accepts any legal HTML color value. Default: '#307ad9'.
|
|
103
|
+
* Opacity: The stroke opacity of directions polylines on the map. Numerical value between 0.0 and 1.0. Default: 1.
|
|
104
|
+
* Weight: The width of the direction polyline in pixels. Default: 4.
|
|
105
|
+
*
|
|
106
|
+
* @type {{ color: string, weight: number, opacity: number }}
|
|
107
|
+
*/
|
|
108
|
+
this.polylineOptions = {
|
|
109
|
+
color: '#3071d9',
|
|
110
|
+
opacity: 1,
|
|
111
|
+
weight: 4
|
|
112
|
+
};
|
|
113
|
+
/**
|
|
114
|
+
* Set or get the current zoom level of the map.
|
|
115
|
+
* @type {string}
|
|
116
|
+
*/
|
|
117
|
+
this.zoom = '17';
|
|
118
|
+
/**
|
|
119
|
+
* Set or get the max pitch of the map (0-85).
|
|
120
|
+
* @type {number}
|
|
121
|
+
*/
|
|
122
|
+
this.maxPitch = 60;
|
|
123
|
+
/**
|
|
124
|
+
* Set or get the max zoom level of the map.
|
|
125
|
+
* @type {string}
|
|
126
|
+
*/
|
|
127
|
+
this.maxZoom = undefined;
|
|
128
|
+
/**
|
|
129
|
+
* Set or get the bearing of the map.
|
|
130
|
+
* @type {string}
|
|
131
|
+
*/
|
|
132
|
+
this.bearing = '0';
|
|
133
|
+
/**
|
|
134
|
+
* Set or get the pitch (tilt) of the map. Measured in degrees (0-60).
|
|
135
|
+
* @type {string}
|
|
136
|
+
*/
|
|
137
|
+
this.pitch = '0';
|
|
138
|
+
/**
|
|
139
|
+
* Set the component language. Default set to English (en). Will not react to changes.
|
|
140
|
+
*/
|
|
141
|
+
this.language = 'en';
|
|
142
|
+
// Directions render and service instances
|
|
143
|
+
this.directionsRendererInstance = null;
|
|
144
|
+
}
|
|
145
|
+
apiKeyChange(newApiKey) {
|
|
146
|
+
mapsindoors.MapsIndoors.setMapsIndoorsApiKey(newApiKey);
|
|
147
|
+
}
|
|
148
|
+
setExternalLinkBehavior(shouldDisableLinks) {
|
|
149
|
+
if (shouldDisableLinks === true) {
|
|
150
|
+
this.mapElement.addEventListener('click', this.preventExternalLink);
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
this.mapElement.removeEventListener('click', this.preventExternalLink);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
floorSelectorControlPositionChange(newPosition) {
|
|
157
|
+
if (this.floorSelectorControl) {
|
|
158
|
+
this.setFloorSelectorControl(newPosition);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
floorIndexChange(newFloor, oldFloor) {
|
|
162
|
+
if (newFloor === null) {
|
|
163
|
+
newFloor = '0'; // Setting the DOM attribute to "0" will be passed on here as null, so we need to circumvent that.
|
|
164
|
+
}
|
|
165
|
+
if (newFloor !== oldFloor && newFloor !== this.mapsIndoorsInstance.getFloor()) {
|
|
166
|
+
this.mapsIndoorsInstance.setFloor(newFloor);
|
|
324
167
|
}
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
if (this.
|
|
331
|
-
|
|
332
|
-
|
|
168
|
+
}
|
|
169
|
+
myPositionControlPositionChange(newPosition) {
|
|
170
|
+
this.setMyPositionControl(newPosition);
|
|
171
|
+
}
|
|
172
|
+
polylineOptionsChange(newPolylineOptions) {
|
|
173
|
+
if (this.directionsRendererInstance) {
|
|
174
|
+
this.directionsRendererInstance.setOptions({
|
|
175
|
+
strokeColor: newPolylineOptions.color ? newPolylineOptions.color : '#3071d9',
|
|
176
|
+
strokeOpacity: newPolylineOptions.opacity ? newPolylineOptions.opacity : 1,
|
|
177
|
+
strokeWeight: newPolylineOptions.weight ? newPolylineOptions.weight : 4
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
zoomChange(newZoom, oldZoom) {
|
|
182
|
+
if (newZoom !== oldZoom && newZoom !== this.mapboxInstance.getZoom()) {
|
|
183
|
+
if (newZoom === null) {
|
|
184
|
+
newZoom = 0; // Setting the DOM attribute to "0" will be passed on here as null, so we need to circumvent that.
|
|
185
|
+
}
|
|
186
|
+
this.mapboxInstance.setZoom(newZoom);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
maxPitchChange(newPitch, oldPitch) {
|
|
190
|
+
if (newPitch !== oldPitch && newPitch !== this.mapboxInstance.getMaxPitch()) {
|
|
191
|
+
if (newPitch === null) {
|
|
192
|
+
newPitch = 0; // Setting the DOM attribute to "0" will be passed on here as null, so we need to circumvent that.
|
|
193
|
+
}
|
|
194
|
+
this.mapboxInstance.setMaxPitch(newPitch);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
maxZoomChange(newZoom, oldZoom) {
|
|
198
|
+
if (newZoom !== oldZoom && newZoom !== this.mapboxInstance.getMaxZoom()) {
|
|
199
|
+
if (newZoom === null) {
|
|
200
|
+
newZoom = 0; // Setting the DOM attribute to "0" will be passed on here as null, so we need to circumvent that.
|
|
201
|
+
}
|
|
202
|
+
this.mapboxInstance.setMaxZoom(newZoom);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
bearingChange(newBearing, oldBearing) {
|
|
206
|
+
if (newBearing !== oldBearing && newBearing !== this.mapboxInstance.getBearing()) {
|
|
207
|
+
if (newBearing === null) {
|
|
208
|
+
newBearing = 0; // Setting the DOM attribute to "0" will be passed on here as null, so we need to circumvent that.
|
|
209
|
+
}
|
|
210
|
+
this.mapboxInstance.setBearing(newBearing);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
pitchChange(newPitch, oldPitch) {
|
|
214
|
+
if (newPitch !== oldPitch && newPitch !== this.mapboxInstance.getPitch()) {
|
|
215
|
+
if (newPitch === null) {
|
|
216
|
+
newPitch = 0; // Setting the DOM attribute to "0" will be passed on here as null, so we need to circumvent that.
|
|
217
|
+
}
|
|
218
|
+
this.mapboxInstance.setPitch(newPitch);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Get the map instance.
|
|
223
|
+
* @returns {Promise<any>}
|
|
224
|
+
*/
|
|
225
|
+
async getMapInstance() {
|
|
226
|
+
return Promise.resolve(this.mapboxInstance);
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Get the MapsIndoors instance.
|
|
230
|
+
* @returns {Promise<any>}
|
|
231
|
+
*/
|
|
232
|
+
async getMapsIndoorsInstance() {
|
|
233
|
+
return Promise.resolve(this.mapsIndoorsInstance);
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Get the MapsIndoors Directions Service Instance.
|
|
237
|
+
* @returns {Promise<any>}
|
|
238
|
+
*/
|
|
239
|
+
async getDirectionsServiceInstance() {
|
|
240
|
+
return Promise.resolve(this.directionsServiceInstance);
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Get the MapsIndoors Directions Renderer Instance.
|
|
244
|
+
* @returns {Promise<any>}
|
|
245
|
+
*/
|
|
246
|
+
async getDirectionsRendererInstance() {
|
|
247
|
+
return Promise.resolve(this.directionsRendererInstance);
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Highlight a MapsIndoors location. Only a single location can be highlighted at the time.
|
|
251
|
+
* @param {Location} location
|
|
252
|
+
* @returns {Promise<void>}
|
|
253
|
+
*/
|
|
254
|
+
async highlightLocation(location) {
|
|
255
|
+
// Return if polygonHighlightOptions is undefined
|
|
256
|
+
if (!this.polygonHighlightOptions)
|
|
257
|
+
return;
|
|
258
|
+
// Return if already highlighted
|
|
259
|
+
if (this.highlightedLocationId && this.highlightedLocationId === location.id)
|
|
260
|
+
return;
|
|
261
|
+
// Remove previous highlight
|
|
262
|
+
if (this.highlightedLocationId) {
|
|
263
|
+
this.mapsIndoorsInstance.setDisplayRule(this.highlightedLocationId, null);
|
|
264
|
+
}
|
|
265
|
+
this.mapsIndoorsInstance.setDisplayRule(location.id, {
|
|
266
|
+
polygonVisible: true,
|
|
267
|
+
polygonZoomFrom: '0',
|
|
268
|
+
polygonZoomTo: '22',
|
|
269
|
+
zIndex: 1000,
|
|
270
|
+
polygonFillColor: this.polygonHighlightOptions.fillColor,
|
|
271
|
+
polygonFillOpacity: this.polygonHighlightOptions.fillOpacity,
|
|
272
|
+
polygonStrokeColor: this.polygonHighlightOptions.strokeColor,
|
|
273
|
+
polygonStrokeOpacity: this.polygonHighlightOptions.strokeOpacity,
|
|
274
|
+
polygonStrokeWeight: this.polygonHighlightOptions.strokeWeight
|
|
275
|
+
});
|
|
276
|
+
this.highlightedLocationId = location.id;
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Clear existing MapsIndoors location highlight.
|
|
280
|
+
* @returns {Promise<void>}
|
|
281
|
+
*/
|
|
282
|
+
async clearHighlightLocation() {
|
|
283
|
+
if (this.highlightedLocationId) {
|
|
284
|
+
this.mapsIndoorsInstance.setDisplayRule(this.highlightedLocationId, null);
|
|
285
|
+
this.highlightedLocationId = null;
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
async componentDidLoad() {
|
|
289
|
+
await this.insertMapBoxScript();
|
|
290
|
+
await this.initializeMapsIndoorsSDK();
|
|
291
|
+
await this.setupMap();
|
|
292
|
+
this.setExternalLinkBehavior(this.disableExternalLinks);
|
|
293
|
+
this.addEventListeners();
|
|
294
|
+
if (this.floorSelectorControlPosition) {
|
|
295
|
+
this.showFloorSelector();
|
|
296
|
+
}
|
|
297
|
+
if (this.myPositionControlPosition) {
|
|
298
|
+
this.setMyPositionControl(this.myPositionControlPosition);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
disconnectedCallback() {
|
|
302
|
+
this.mapsIndoorsInstance.deallocate();
|
|
303
|
+
this.mapElement.remove();
|
|
304
|
+
this.mapElement = null;
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Inject script tag for Mapbox API onto the page.
|
|
308
|
+
*
|
|
309
|
+
* @returns {Promise<void>}
|
|
310
|
+
*/
|
|
311
|
+
insertMapBoxScript() {
|
|
312
|
+
if (typeof (mapboxgl) === 'undefined') {
|
|
313
|
+
return new Promise(resolve => {
|
|
314
|
+
const mapboxApiTag = document.createElement('script');
|
|
315
|
+
mapboxApiTag.setAttribute('type', 'text/javascript');
|
|
316
|
+
// When upgrading the version please remember to update url to the MapBox css in the render function.
|
|
317
|
+
mapboxApiTag.setAttribute('src', 'https://api.mapbox.com/mapbox-gl-js/v3.19.0/mapbox-gl.js');
|
|
318
|
+
document.body.appendChild(mapboxApiTag);
|
|
319
|
+
mapboxApiTag.onload = () => resolve();
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Ensure that MapsIndoors Web SDK is available.
|
|
325
|
+
*
|
|
326
|
+
* @returns {Promise<void>}
|
|
327
|
+
*/
|
|
328
|
+
initializeMapsIndoorsSDK() {
|
|
329
|
+
return new Promise((resolve) => {
|
|
330
|
+
if (typeof mapsindoors !== 'undefined') {
|
|
331
|
+
mapsindoors.MapsIndoors.setMapsIndoorsApiKey(this.miApiKey);
|
|
332
|
+
mapsindoors.MapsIndoors.setLanguage(this.language);
|
|
333
|
+
return resolve();
|
|
334
|
+
}
|
|
335
|
+
const miSdkApiTag = document.createElement('script');
|
|
336
|
+
miSdkApiTag.setAttribute('type', 'text/javascript');
|
|
337
|
+
miSdkApiTag.setAttribute('src', `${miVariables.miSDKUrlV4}?apikey=${this.miApiKey}`);
|
|
338
|
+
document.body.appendChild(miSdkApiTag);
|
|
339
|
+
miSdkApiTag.onload = () => resolve();
|
|
340
|
+
});
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Start MapBox and MapsIndoors.
|
|
344
|
+
*/
|
|
345
|
+
setupMap() {
|
|
346
|
+
return new Promise((resolve) => {
|
|
347
|
+
const mapViewOptions = {
|
|
348
|
+
accessToken: this.accessToken,
|
|
349
|
+
element: this.mapElement,
|
|
350
|
+
zoom: this.zoom,
|
|
351
|
+
maxZoom: this.maxZoom,
|
|
352
|
+
maxPitch: this.maxPitch,
|
|
353
|
+
bearing: this.bearing,
|
|
354
|
+
pitch: this.pitch
|
|
355
|
+
};
|
|
356
|
+
const mapViewInstance = new mapsindoors.mapView.MapboxView(mapViewOptions);
|
|
357
|
+
this.mapboxInstance = mapViewInstance.getMap();
|
|
358
|
+
this.mapsIndoorsInstance = new mapsindoors.MapsIndoors({
|
|
359
|
+
mapView: mapViewInstance,
|
|
360
|
+
labelOptions: {
|
|
361
|
+
pixelOffset: { width: 0, height: 14 },
|
|
362
|
+
style: {
|
|
363
|
+
fontSize: '11px'
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
});
|
|
367
|
+
// Add zoom and rotation controls
|
|
368
|
+
const navigationControl = new mapboxgl.NavigationControl();
|
|
369
|
+
this.mapboxInstance.addControl(navigationControl, 'top-left');
|
|
370
|
+
this.mapsIndoorsInstance.on('ready', async () => {
|
|
371
|
+
if (this.floorIndex !== undefined) {
|
|
372
|
+
// Set the floor if floor attribute was set in the DOM initially
|
|
373
|
+
this.mapsIndoorsInstance.setFloor(this.floorIndex);
|
|
374
|
+
}
|
|
375
|
+
else {
|
|
376
|
+
this.floorIndex = this.mapsIndoorsInstance.getFloor();
|
|
377
|
+
}
|
|
378
|
+
this.initializeDirectionsService();
|
|
379
|
+
this.initializeDirectionsRenderer();
|
|
380
|
+
this.mapsIndoorsReady.emit();
|
|
381
|
+
resolve();
|
|
382
|
+
});
|
|
383
|
+
});
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Initialize MapsIndoors Directions Service.
|
|
387
|
+
*/
|
|
388
|
+
initializeDirectionsService() {
|
|
389
|
+
const externalDirections = new mapsindoors.directions.MapboxProvider(this.accessToken);
|
|
390
|
+
this.directionsServiceInstance = new mapsindoors.services.DirectionsService(externalDirections);
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* Initialize MapsIndoors Directions Renderer with render options set.
|
|
394
|
+
*/
|
|
395
|
+
initializeDirectionsRenderer() {
|
|
396
|
+
this.directionsRendererInstance = new mapsindoors.directions.DirectionsRenderer({
|
|
397
|
+
mapsIndoors: this.mapsIndoorsInstance,
|
|
398
|
+
fitBounds: true,
|
|
399
|
+
strokeColor: this.polylineOptions.color,
|
|
400
|
+
strokeOpacity: this.polylineOptions.opacity,
|
|
401
|
+
strokeWeight: this.polylineOptions.weight,
|
|
402
|
+
visible: true
|
|
403
|
+
});
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* Add event listeners and keep properties in sync.
|
|
407
|
+
*/
|
|
408
|
+
addEventListeners() {
|
|
409
|
+
// Add click listener to highlight the clicked location
|
|
410
|
+
this.mapsIndoorsInstance.on('click', (location) => {
|
|
411
|
+
this.highlightLocation(location);
|
|
412
|
+
});
|
|
413
|
+
// Add floor changed event listener to update the floorIndex attribute
|
|
414
|
+
this.mapsIndoorsInstance.on('floor_changed', (floorIndex) => {
|
|
415
|
+
this.floorIndex = floorIndex;
|
|
416
|
+
});
|
|
417
|
+
// Add zoom end event listener to update the zoom attribute
|
|
418
|
+
this.mapboxInstance.on('zoomend', () => {
|
|
419
|
+
this.zoom = this.mapboxInstance.getZoom().toString();
|
|
420
|
+
});
|
|
421
|
+
// Add pitch (tilt) end listener to update the pitch attribute
|
|
422
|
+
this.mapboxInstance.on('pitchend', () => {
|
|
423
|
+
this.pitch = this.mapboxInstance.getPitch().toString();
|
|
424
|
+
});
|
|
425
|
+
// Add rotate end listener to update the bearing attribute
|
|
426
|
+
this.mapboxInstance.on('rotateend', () => {
|
|
427
|
+
this.bearing = this.mapboxInstance.getBearing().toString();
|
|
428
|
+
});
|
|
429
|
+
}
|
|
430
|
+
/**
|
|
431
|
+
* Prevent external links from opening.
|
|
432
|
+
* @param {MouseEvent} event
|
|
433
|
+
*/
|
|
434
|
+
preventExternalLink(event) {
|
|
435
|
+
const externalLink = event.target.closest('a[target="_blank"]');
|
|
436
|
+
if (externalLink) {
|
|
437
|
+
event.preventDefault();
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* Show the floor selector after user interacts with map.
|
|
442
|
+
* Sets up event listener what when invoked will set the floor selector on the map.
|
|
443
|
+
*/
|
|
444
|
+
showFloorSelector() {
|
|
445
|
+
this.setFloorSelectorControl(this.floorSelectorControlPosition);
|
|
446
|
+
}
|
|
447
|
+
/**
|
|
448
|
+
* Set, update or unset floor selector on the map.
|
|
449
|
+
* @param {('top-left' | 'top-right' | 'bottom-left' | 'bottom-right')} controlPosition
|
|
450
|
+
*/
|
|
451
|
+
setFloorSelectorControl(controlPosition) {
|
|
452
|
+
if (controlPosition === null) {
|
|
453
|
+
// If attribute is not set, remove floor selector control
|
|
454
|
+
this.mapboxInstance.removeControl(this.floorSelectorControl);
|
|
455
|
+
this.floorSelectorControl = null;
|
|
456
|
+
}
|
|
457
|
+
else if (!this.floorSelectorControl) {
|
|
458
|
+
// Create new floor selector control
|
|
459
|
+
this.floorSelectorControl = new FloorSelectorControl(this.mapboxInstance, this.mapsIndoorsInstance);
|
|
460
|
+
this.mapboxInstance.addControl(this.floorSelectorControl, this.floorSelectorControlPosition);
|
|
333
461
|
}
|
|
334
462
|
else {
|
|
335
|
-
|
|
463
|
+
// Update position of floor selector control
|
|
464
|
+
this.mapboxInstance.removeControl(this.floorSelectorControl);
|
|
465
|
+
this.mapboxInstance.addControl(this.floorSelectorControl, this.floorSelectorControlPosition);
|
|
336
466
|
}
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
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
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
}
|
|
398
|
-
}
|
|
399
|
-
/**
|
|
400
|
-
* Show the floor selector after user interacts with map.
|
|
401
|
-
* Sets up event listener what when invoked will set the floor selector on the map.
|
|
402
|
-
*/
|
|
403
|
-
showFloorSelector() {
|
|
404
|
-
this.setFloorSelectorControl(this.floorSelectorControlPosition);
|
|
405
|
-
}
|
|
406
|
-
/**
|
|
407
|
-
* Set, update or unset floor selector on the map.
|
|
408
|
-
* @param {('top-left' | 'top-right' | 'bottom-left' | 'bottom-right')} controlPosition
|
|
409
|
-
*/
|
|
410
|
-
setFloorSelectorControl(controlPosition) {
|
|
411
|
-
if (controlPosition === null) {
|
|
412
|
-
// If attribute is not set, remove floor selector control
|
|
413
|
-
this.mapboxInstance.removeControl(this.floorSelectorControl);
|
|
414
|
-
this.floorSelectorControl = null;
|
|
415
|
-
}
|
|
416
|
-
else if (!this.floorSelectorControl) {
|
|
417
|
-
// Create new floor selector control
|
|
418
|
-
this.floorSelectorControl = new FloorSelectorControl(this.mapboxInstance, this.mapsIndoorsInstance);
|
|
419
|
-
this.mapboxInstance.addControl(this.floorSelectorControl, this.floorSelectorControlPosition);
|
|
420
|
-
}
|
|
421
|
-
else {
|
|
422
|
-
// Update position of floor selector control
|
|
423
|
-
this.mapboxInstance.removeControl(this.floorSelectorControl);
|
|
424
|
-
this.mapboxInstance.addControl(this.floorSelectorControl, this.floorSelectorControlPosition);
|
|
425
|
-
}
|
|
426
|
-
}
|
|
427
|
-
/**
|
|
428
|
-
* Set, update or unset my position control on the map.
|
|
429
|
-
* @param {('top-left' | 'top-right' | 'bottom-left' | 'bottom-right')} controlPosition
|
|
430
|
-
*/
|
|
431
|
-
setMyPositionControl(controlPosition) {
|
|
432
|
-
if (controlPosition === null) {
|
|
433
|
-
// If attribute is not set, remove my position control
|
|
434
|
-
this.mapboxInstance.removeControl(this.myPositionControl);
|
|
435
|
-
this.myPositionControl = null;
|
|
436
|
-
}
|
|
437
|
-
else if (!this.myPositionControl) {
|
|
438
|
-
// Create new my position control
|
|
439
|
-
this.myPositionControl = new MyPositionControl(this.mapboxInstance, this.mapsIndoorsInstance);
|
|
440
|
-
this.mapboxInstance.addControl(this.myPositionControl, this.myPositionControlPosition);
|
|
441
|
-
}
|
|
442
|
-
else {
|
|
443
|
-
// Update position of my position control
|
|
444
|
-
this.mapboxInstance.removeControl(this.myPositionControl);
|
|
445
|
-
this.mapboxInstance.addControl(this.myPositionControl, this.myPositionControlPosition);
|
|
446
|
-
}
|
|
447
|
-
}
|
|
448
|
-
render() {
|
|
449
|
-
return (h(Host, null, h("link", { href: 'https://api.mapbox.com/mapbox-gl-js/v2.3.0/mapbox-gl.css', rel: 'stylesheet' }), h("div", { ref: (el) => this.mapElement = el })));
|
|
450
|
-
}
|
|
451
|
-
static get watchers() { return {
|
|
452
|
-
"miApiKey": ["apiKeyChange"],
|
|
453
|
-
"disableExternalLinks": ["setExternalLinkBehavior"],
|
|
454
|
-
"floorSelectorControlPosition": ["floorSelectorControlPositionChange"],
|
|
455
|
-
"floorIndex": ["floorIndexChange"],
|
|
456
|
-
"myPositionControlPosition": ["myPositionControlPositionChange"],
|
|
457
|
-
"polylineOptions": ["polylineOptionsChange"],
|
|
458
|
-
"zoom": ["zoomChange"],
|
|
459
|
-
"maxPitch": ["maxPitchChange"],
|
|
460
|
-
"maxZoom": ["maxZoomChange"],
|
|
461
|
-
"bearing": ["bearingChange"],
|
|
462
|
-
"pitch": ["pitchChange"]
|
|
463
|
-
}; }
|
|
467
|
+
}
|
|
468
|
+
/**
|
|
469
|
+
* Set, update or unset my position control on the map.
|
|
470
|
+
* @param {('top-left' | 'top-right' | 'bottom-left' | 'bottom-right')} controlPosition
|
|
471
|
+
*/
|
|
472
|
+
setMyPositionControl(controlPosition) {
|
|
473
|
+
if (controlPosition === null) {
|
|
474
|
+
// If attribute is not set, remove my position control
|
|
475
|
+
this.mapboxInstance.removeControl(this.myPositionControl);
|
|
476
|
+
this.myPositionControl = null;
|
|
477
|
+
}
|
|
478
|
+
else if (!this.myPositionControl) {
|
|
479
|
+
// Create new my position control
|
|
480
|
+
this.myPositionControl = new MyPositionControl(this.mapboxInstance, this.mapsIndoorsInstance);
|
|
481
|
+
this.mapboxInstance.addControl(this.myPositionControl, this.myPositionControlPosition);
|
|
482
|
+
}
|
|
483
|
+
else {
|
|
484
|
+
// Update position of my position control
|
|
485
|
+
this.mapboxInstance.removeControl(this.myPositionControl);
|
|
486
|
+
this.mapboxInstance.addControl(this.myPositionControl, this.myPositionControlPosition);
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
render() {
|
|
490
|
+
return (h(Host, { key: '9b0f272944723fbf10d5ce6f826c6eab45b11ddc' }, h("link", { key: 'c199834955eb110c6b9df4fbfe3994e0d89f5874', href: 'https://api.mapbox.com/mapbox-gl-js/v3.19.0/mapbox-gl.css', rel: 'stylesheet' }), h("div", { key: '12524233dc04a7f99bed546faf62df006d193f81', ref: (el) => this.mapElement = el })));
|
|
491
|
+
}
|
|
492
|
+
static get watchers() { return {
|
|
493
|
+
"miApiKey": [{
|
|
494
|
+
"apiKeyChange": 0
|
|
495
|
+
}],
|
|
496
|
+
"disableExternalLinks": [{
|
|
497
|
+
"setExternalLinkBehavior": 0
|
|
498
|
+
}],
|
|
499
|
+
"floorSelectorControlPosition": [{
|
|
500
|
+
"floorSelectorControlPositionChange": 0
|
|
501
|
+
}],
|
|
502
|
+
"floorIndex": [{
|
|
503
|
+
"floorIndexChange": 0
|
|
504
|
+
}],
|
|
505
|
+
"myPositionControlPosition": [{
|
|
506
|
+
"myPositionControlPositionChange": 0
|
|
507
|
+
}],
|
|
508
|
+
"polylineOptions": [{
|
|
509
|
+
"polylineOptionsChange": 0
|
|
510
|
+
}],
|
|
511
|
+
"zoom": [{
|
|
512
|
+
"zoomChange": 0
|
|
513
|
+
}],
|
|
514
|
+
"maxPitch": [{
|
|
515
|
+
"maxPitchChange": 0
|
|
516
|
+
}],
|
|
517
|
+
"maxZoom": [{
|
|
518
|
+
"maxZoomChange": 0
|
|
519
|
+
}],
|
|
520
|
+
"bearing": [{
|
|
521
|
+
"bearingChange": 0
|
|
522
|
+
}],
|
|
523
|
+
"pitch": [{
|
|
524
|
+
"pitchChange": 0
|
|
525
|
+
}]
|
|
526
|
+
}; }
|
|
464
527
|
};
|
|
465
|
-
MapMapbox.style = mapMapboxCss;
|
|
528
|
+
MapMapbox.style = mapMapboxCss();
|
|
466
529
|
|
|
467
530
|
export { MapMapbox as mi_map_mapbox };
|