Skip to content

Map ​

Displays an interactive map powered by Leaflet. The Map widget is a container that holds Map Marker children. Each marker defines a point on the map, either by coordinates or by address.

Properties ​

PropertyTypeDefaultDescription
heighttext'400px'The map height. Any valid CSS value.
zoomnumber13The default zoom level (1 = world, 18 = street level).
apiKeytext''Optional Google Maps API key for geocoding address-based markers. When empty, the free Nominatim (OpenStreetMap) geocoder is used.

Usage Modes ​

1. Direct Markers (static points) ​

Drop Map Marker widgets directly inside the Map. Each marker has its own coordinates or address.

Map (height: 500px, zoom: 12)
  └─ Map Marker (lat: 48.8566, lng: 2.3522, popup: "Paris")
  └─ Map Marker (lat: 51.5074, lng: -0.1278, popup: "London")

2. Repeater Markers (data-driven) ​

Place a Repeater inside the Map, with a Map Marker inside the Repeater. The marker props use expressions to pull lat/lng from each data row.

Map (height: 500px, zoom: 10)
  └─ Repeater (data pipeline: load "stores" table)
       └─ Map Marker (lat: {{row.lat}}, lng: {{row.lng}}, popup: {{row.name}})

This renders one marker per row in the data source.

3. Mixed ​

You can combine direct markers and repeater-driven markers inside the same Map.

Map (height: 600px)
  └─ Map Marker (mode: address, address: "Company HQ, New York", popup: "Main Office")
  └─ Repeater (data pipeline: load "branches")
       └─ Map Marker (lat: {{row.lat}}, lng: {{row.lng}}, popup: {{row.city}})

Geocoding ​

Markers using the address mode are geocoded at runtime in the browser.

  • Without API key: Uses the free Nominatim geocoder from OpenStreetMap. Rate-limited to ~1 request per second. Best for small numbers of address markers.
  • With API key: Uses the Google Geocoding API. Faster and more reliable for production use. Set the apiKey property on the Map widget.

Tips ​

  • The map auto-fits bounds to show all markers. If there are no markers, it shows a default world view.
  • The height property accepts any CSS value: 400px, 50vh, 100%, etc.
  • For filtering locations by distance, use the Distance Filter transform node in your pipeline.
  • Pair with a Text Input widget to let users enter location addresses.
  • See also: Map Marker