diff --git a/html/static/js/map-multipoint.js b/html/static/js/map-multipoint.js index 6c993a03..8c22aaea 100644 --- a/html/static/js/map-multipoint.js +++ b/html/static/js/map-multipoint.js @@ -6,7 +6,7 @@ class MapMultipoint extends HTMLElement { super(); // Create a shadow DOM - this.attachShadow({mode: "open" }); + this.attachShadow({ mode: "open" }); // Initial render this.render(); @@ -30,118 +30,61 @@ class MapMultipoint extends HTMLElement { // Lifecycle: watch these attributes for changes static get observedAttributes() { - return ['api-key', 'latitude', 'longitude', 'zoom']; + return ["api-key", "latitude", "longitude", "zoom"]; } // Lifecycle: respond to attribute changes attributeChangedCallback(name, oldValue, newValue) { // Only handle if map exists and values actually changed if (!this._map || oldValue === newValue) return; - - if (name === 'latitude' || name === 'longitude') { - if (this.hasAttribute('latitude') && this.hasAttribute('longitude')) { - const lat = Number(this.getAttribute('latitude')); - const lng = Number(this.getAttribute('longitude')); + + if (name === "latitude" || name === "longitude") { + if (this.hasAttribute("latitude") && this.hasAttribute("longitude")) { + const lat = Number(this.getAttribute("latitude")); + const lng = Number(this.getAttribute("longitude")); this._map.setCenter([lat, lng]); } } - if (name === 'zoom') { + if (name === "zoom") { this._map.setZoom(Number(newValue)); } } - + _initializeMap() { const apiKey = this.getAttribute("api-key"); - const lat = Number(this.getAttribute('latitude') || 36.2); - const lng = Number(this.getAttribute('longitude') || -119.2); + const lat = Number(this.getAttribute("latitude") || 36.2); + const lng = Number(this.getAttribute("longitude") || -119.2); const organization_id = Number(this.getAttribute("organization-id") || 0); - const tegola = this.getAttribute("tegola") - const zoom = Number(this.getAttribute('zoom') || 15); + const tegola = this.getAttribute("tegola"); + const zoom = Number(this.getAttribute("zoom") || 15); - mapboxgl.accessToken = apiKey; const mapElement = this.shadowRoot.querySelector("#map"); - this._map = new mapboxgl.Map({ + this._map = new maplibregl.Map({ container: mapElement, center: { lat: lat, lng: lng, }, - style: 'mapbox://styles/mapbox/streets-v12', // style URL + style: "https://tiles.stadiamaps.com/styles/osm_bright.json", zoom: zoom, }); - /*this._map.addControl(new mapboxgl.GeolocateControl({ + /*this._map.addControl(new maplibregl.GeolocateControl({ positionOptions: { enableHighAccuracy: true }, trackUserLocation: true, showUserHeading: true })); - this._map.addControl(new mapboxgl.NavigationControl()); + this._map.addControl(new maplibregl.NavigationControl()); */ this._map.on("load", () => { - this.dispatchEvent(new CustomEvent('load'), { + this.dispatchEvent(new CustomEvent("load"), { bubbles: true, composed: true, // Allows event to cross shadow DOM boundary detail: { - map: this - } - }); - }); - } - - async _fetchAddressSuggestions(text) { - try { - const url = `https://api.mapbox.com/search/geocode/v6/forward?q=${encodeURIComponent(text)}&access_token=${this._apiKey}`; - - const response = await fetch(url); - const data = await response.json(); - return data; - } catch (error) { - console.error('Error fetching geocoding suggestions:', error); - } - } - - _renderSuggestions(suggestions) { - console.log("Rendering suggestions", suggestions); - this._suggestions.innerHTML = suggestions.map((item, index) => { - if (item.properties.place_formatted != "") { - return ` -