Skip to content

Viewing members on the map ​

The members layer is the centrepiece of the map. Open /map, leave the Members checkbox on, and every member in your organisation with a coordinate on file shows up as a circular marker.

Members on the map

What you see on a marker ​

Each member marker is a round chip with one of two faces:

  • Photo β€” if the member has a profile photo uploaded, the photo is rendered at small size inside the circle.
  • Initial β€” if there's no photo (or the photo URL fails to load), the marker falls back to a blue circle with the first letter of their first name.

The blue ring around every marker, the white border, and the drop-shadow are deliberate β€” they keep the markers readable on top of busy OpenStreetMap tiles regardless of the underlying terrain.

TIP

A member without a profile photo is still clickable and still works fine on the map. The photo is a niceness, not a requirement.

Clicking a marker ​

Click any member marker and a popup opens with:

  • Profile photo β€” same image as the marker, at slightly larger size.
  • Full name β€” first names + last names.
  • Primary phone β€” if one is on file.
  • A Member badge (always shown).
  • A source badge β€” Exact (pin placed) in green if the member has an explicit pin, Approximate (from address) in amber if they're being shown from their geocoded address.
  • A View profile link β€” opens /members/:id in the same tab.

The source badge is the quickest way to spot which members in your view have ground-truth locations and which are guesses from their address. A pin labelled Approximate sitting in the middle of a road is usually a sign the geocoder picked the road centroid for an apartment block β€” you can fix it by opening the member and using Use my location when you're at their door.

Where a member's coordinates come from ​

Every member can carry two coordinates, populated by two completely different flows:

  1. Exact pin (map_location) β€” a staff member, on a phone at the member's home or in the office reading off a card, clicked Use my location or typed lat,lng into the location field on the member's profile.
  2. Estimated coordinate (estimated_map_location) β€” the geocoding worker ran their address through Nominatim, Mapbox, or Google and stored the result.

Both flows write to separate columns. The source selector at the top of the map decides which one to draw. With All locations (the default), each member shows its exact pin if one exists, otherwise its estimated pin.

A member only appears on the map if at least one of those two coordinates exists. Members with neither β€” no pin, no address β€” sit silently in the directory but aren't on the map.

Clustering ​

When the Cluster checkbox is on (the default), nearby member markers collapse into a numbered bubble as you zoom out. Click a cluster to zoom in until it splits, or zoom past level 17 and clustering disables automatically so you can see every pin individually.

Clustering exists because city-sized member counts produce a screen full of overlapping circles otherwise. A church with 1,200 members in one city would render as a solid blue smear without it; clustered, you see the actual density.

Turn clustering off if:

  • Your map is sparse (<50 members) and the clusters obscure individual pins.
  • You're zoomed in already and want every pin separately, even when they sit on top of each other.

The setting is per-session β€” it doesn't save back to the database.

Spiderfy ​

If two or more members are stacked at exactly the same coordinate (a husband and wife, both pinned at their shared front door), the cluster bubble in their place becomes a spiderfy group: click it and the overlapping pins fan out radially with thin lines back to the centre. Click any of the now-visible pins to open its popup as usual.

Performance ​

The members layer uses chunked loading β€” the cluster library streams pins onto the map in batches as you pan, so a 5,000-member view doesn't freeze the page. A few practical notes:

  • Adding 10,000+ members with photos at once will start to feel laggy on lower-end laptops. Filter down (a future feature) or zoom in.
  • Member photos are loaded lazily β€” only the markers actually visible at your current zoom and pan position fetch images.
  • Bounds-fit runs every time the visible point set changes (you toggle layers, switch source). For sparse data the map jumps; for dense data the map mostly stays put.

The single most common reason to open the map is to find a member by location: who do we have in this neighbourhood? Workflow:

  1. Zoom into the neighbourhood.
  2. Click a cluster or individual pin.
  3. Hit View profile in the popup.
  4. You're on the member's /members/:id page with their full record, contacts, attendance, giving, and notes.

From the profile you can call them, message them, add a note, or schedule a follow-up. The map is the discovery surface; the profile is where the work happens.

Common questions ​

Why doesn't this member appear on the map? Three reasons:

  1. No coordinate at all (no pin and no address that geocodes successfully).
  2. Their address geocoded but the source selector is set to Exact, hiding estimates.
  3. They're soft-deleted (the map excludes deleted_at members the same way every other module does).

Can I drag a marker to a new spot? No β€” the map is read-only. Open the member's profile and use the location field there. We deliberately don't enable drag-to-edit on the map because it's too easy to misclick and silently overwrite a real pin.

Why do some markers show photos and others initials? Members with no profile photo, or whose photo URL fails to load, render as a blue circle with their first initial. Upload a photo on their profile and the marker updates next time the map loads.

Can I export the map data? Not from the map UI directly. To get the underlying list, go to Members β†’ list view and use the export action there; the location columns come along with the rest of the member record.

Next steps ​