settings.latitude / settings.longitudesettings.marker.link)settings.zoom{
"name": "Map",
"view": "Default",
"section": "SectionA",
"settings": {
"address": {
"address1": "Sample address",
"city": "Sample city",
"state": "Sample state",
"country": "Sample country",
"postalCode": "Sample postal code",
"translation": {}
},
"latitude": "37.947045",
"longitude": "23.703733",
"zoom": 14,
"imageTranslation": {},
"id": "Component Id",
"section": "SectionA",
"type": "Map",
"name": "Map",
"configuredInContentApi": false,
"view": "Default",
"displayName": "",
"cssClass": "",
"header": "",
"alignment": "Left"
},
"translations": {
"map": "Sample text",
"viewDirections": "Sample text",
"...": "..."
}
}settings.idcomp-{{ id }} and map container id: map-{{ id }}.settings.latitude, settings.longitudeIn the theme they are passed as strings and converted to numbers in JS.
settings.cssClass(UNDEFINED).settings.headersettings.zoomsettings.address.*address1, city, state, countrysettings.phone, settings.emailtel: linkmailto: linkThese exist in the Liquid template ( model.Settings.Phone,model.Settings.Email) even if not present in your example model.
settings.marker.linkThe Liquid template reads model.Settings.Marker.link.
translations.viewDirectionsinitComponent(id, lat, long, address, phone, email, markerLink, zoom, viewDirectionsTranslation)zoom: Number(zoom)lat: Number(lat)long: Number(long)address/phone/email/markerLinkmarkers: []init()addMarkers() (async)init()this.map = L.map("map-" + this.id)https://{s}.basemaps.cartocdn.com/rastertiles/voyager/{z}/{x}/{y}{r}.pngmaxZoom: 19this.zoom if finite, else 14this.map.setView([20, 0], defaultZoom)addMarkers() and then adjusts the view:defaultZoomL must exist), otherwise initialization will throw.addMarkers() (async)const markerCluster = L.markerClusterGroup();lat/long are not finite → returns early (no marker)markerLink exists:L.icon({ iconUrl, iconSize, iconAnchor, popupAnchor })https://www.google.com/maps/search/?api=1&query=<lat>,<long>viewDirectionsTranslationthis.markers, adds cluster to map.L.markerClusterGroup). If marker cluster plugin isn’t loaded, this will throw. (No fallback is implemented.)L)L.markerClusterGroup)settings.marker.link)settings.mapExtended exists in the model but is not used by the current Noir template.x-data='mapdefault.initComponent(id, lat, long, address, phone, email, markerLink, zoom, viewDirectionsTranslation)'address string from settings.address.* before passing it into JS.<div id="map-{{ id }}">h-[265px]lg:h-[440px]