Skip to content

Map ​

The Map module shows the people and places of your church on a Leaflet-based world map. Open it once and you get the answers a printed church directory will never give you: where most of our members actually live, which neighbourhoods we have no one in, where each campus sits in relation to the people it serves.

Map overview

What appears on the map ​

Two layers, both toggleable:

LayerWhat it showsMarker
MembersEvery member with at least one coordinate on fileCircle with profile photo or initial
Org unitsEvery campus, branch, or sub-unit with a coordinateColoured pill labelled with the level abbreviation

A member or unit only shows up if it has either an exact pin (set by hand) or an estimated location (geocoded from its address). Records with no address and no pin are silently skipped β€” they have nothing to plot.

The pin count in the top-right of the controls (123 pins) is the total of whatever is currently visible after your filters.

Where the coordinates come from ​

Every member and every org unit can carry two independent coordinates:

  • Exact (pin placed) β€” map_location. Set by a staff member who actually opened the profile, clicked Use my location, or typed lat,lng. Ground truth.
  • Approximate (from address) β€” estimated_map_location. Set automatically by the geocoder when an address field changes. Cheap, scales to thousands of members, but only as accurate as the underlying address.

The source selector on the controls lets you choose which to display:

  • Exact (pin placed) β€” only records with a hand-set pin.
  • Approximate (from address) β€” only records the geocoder placed.
  • All locations (default) β€” prefer the exact pin; fall back to the estimated one if no pin exists.

See Geocoding members for how addresses become coordinates and what the queue looks like behind the scenes.

Map controls ​

A single card sits above the map:

  • Members / Org units checkboxes β€” turn each layer on and off.
  • Source dropdown β€” exact / approximate / all.
  • Cluster checkbox β€” group nearby member markers into numbered bubbles at zoomed-out levels.
  • Pin count β€” total visible markers, updates as you change filters.

The map itself supports scroll-to-zoom, click-and-drag panning, and auto-fits to whatever markers are currently visible. Change the source or toggle a layer, and the map re-fits to keep your data in frame.

Empty states ​

The card area handles two no-data situations cleanly:

  • Enable at least one layer to see markers on the map β€” both Members and Org units are unchecked.
  • No records with location data found β€” layers are on, but nothing in your org has a coordinate yet. Either add a pin to a member, add an address and let the geocoder run, or check the geocoding queue.

Plan and permissions ​

RequirementWhere it's enforced
Map module enabled for the org's planModule registry β€” growth+ plans
map.view permissionRoute guard on /map
Org-structure module enabledDependency β€” org units layer needs the hierarchy

The map is a read-only viewer. You can't drag a marker to a new spot from the map page; coordinates are set on the member profile or org-unit editor.

ActionAdminShepherdMember
Open the mapyesyesno
See member popupsyesyesn/a
See org-unit popupsyesyesn/a
Configure geocoding provideryesnono

Privacy ​

Members appear on the map by name and profile photo, so the map respects the same access rules as the member directory β€” if you can't see a member's profile, you won't see their pin either. Marker queries are scoped to your organisation by RLS, so a leader of Grace Community Church will never see a pin from another church on the same Supabase instance.

If a member doesn't want to appear on a shared map, clear both their exact pin and their address. With no address, the geocoder won't produce an estimate, and the member quietly drops off.

Why a real map (not just a list) ​

A printed list of addresses gives you a count. A map gives you a shape. Common things leaders notice the first time they open it:

  • Half our members live in one neighbourhood our home group programme doesn't cover.
  • We have two members on the far side of the highway, four hours from the nearest campus. They probably can't make Sunday.
  • Our youth ministry is concentrated in one school district. We should think about a second.

These are decisions you can't make from a spreadsheet. The map is the cheapest way to surface them.

Next steps ​

  1. Viewing members on the map β€” what the member layer shows and how the popups work.
  2. Org units on the map β€” campuses, branches, and the level-coloured markers.
  3. Filters and layers β€” turn things on and off, switch source, control clustering.
  4. Geocoding members β€” how addresses become coordinates, providers, and the queue.