Skip to main content

Contact Map

Pour :Administrateur
Open in Unisoft
View of the 'Contact Map' page with filters on the left, map in the center and visit plan panel on the right.

The map displays all your geolocated contacts on a modern, interactive vector map. It is the field visit tool: a rabbi, a volunteer, a coordinator can spot in seconds the members they haven't seen in a long time, prepare an optimized route, export the itinerary to Google Maps or print a paper field sheet.

Access it from the Contacts menu β†’ Map, or via the URL /app/contact/maps.

The screen at a glance​

On desktop, the interface consists of three columns:

ColumnPurpose
Left β€” FiltersColoring mode, display switches, search, categories, sectors.
Center β€” The mapFullscreen vector map with markers, GPS location, organization head office and active plan polyline.
Right β€” Visit planReorderable list of selected stops, estimated distance/duration, Optimize / Export / Save buttons.

At the top of the page, the SubHeader bar groups the main actions: contact search (autocomplete), My plans, My location, Organization, See all, and a colored New plan button.

The map​

Tiles and style​

Rendering uses MapLibre GL JS with the OpenFreeMap Positron style: clean light background, readable labels at every scale, no ads or watermarks. The map centers by default on your organization's head office at zoom level 14 (neighborhood).

The markers​

Each geocoded address of a contact becomes a pin on the map. The pin takes the color determined by the active coloring mode (see below).

CaseAppearance
Single contactUniform color pin, white outline
Address shared by several contactsPin with a small counter circle in the top-right showing the number of contacts (e.g. 3)
Contact added to the current planPink magenta circle numbered (order in the tour) β€” replaces the classic pin
Organization head officeSpecial pin with your organization's logo
Your GPS locationPulsing blue circle with direction indicator if available

A click on a pin opens the detail popup. If the pin contains several contacts, the multi popup lists the present members and lets you pick one to view their profile.

Automatic and progressive geocoding​

To position a contact, the postal address (street + postal code + city + country) is sent to a geocoding service. The latitude/longitude found is stored on the server side for subsequent visits β€” no need to recompute on each load.

On the first display, a progress badge appears at the top-left of the map (Geolocation 240/850). Contacts already geocoded show up immediately; the rest appear progressively (4 parallel requests).

The filters​

Coloring mode​

Choose one mode out of five, in the left panel:

ModeColor logic
Last visitGreen (< 3 months), orange (3-6 months), purple (> 6 months), red (never visited)
Last interaction (all sources)Same palette, but takes into account visits + payments + form submissions + recorded interactions
By categoryDeterministic palette per category (each category always gets the same HSL hue)
By sectorSame but on the contact's route / sector field
Family statusGray (deceased), blue (new), yellow (starred), green otherwise

A legend at the bottom-left of the map recaps the meaning of the colors. It adapts to the active mode (in Category / Sector mode, it lists visible categories with their hue).

The Search field below the coloring mode offers grouped autocompletion in 4 categories:

  • People: First Last name (with counter if several addresses)
  • Cities: Paris (with number of contacts in the city)
  • Postal codes: 75011
  • Addresses: 12 rue de Rivoli

Type 1+ character to see suggestions; click a suggestion to filter the map. The search is accent-insensitive and case-insensitive (NFD normalization).

Multi-select on categories and sectors​

The two blocks Categories and Sectors are multi-select pickers. The logic is "at least one": a contact is displayed if they carry at least one of the selected categories AND belong to at least one of the selected sectors.

Each option shows the count of relevant contacts (Regular donors (87)), recomputed on each reload.

Display switches​

SwitchEffect
Show only heads of householdDisplays only one marker per household, the head. Avoids pin stacking at the same address.
Hide organization markerHides the pin with your organization's logo.

Tip: "Create a plan with visible contacts"​

If your filters narrow the display to 2 to 50 contacts, a blue panel at the bottom of the filters offers "Create an optimized plan with these contacts β†’ ". One click adds all visible contacts to the plan and launches the automatic optimization.

Beyond 50, the panel shows a hint inviting you to refine the filters (limit imposed by the optimization API).

A contact's popup​

Clicking on a pin opens a popup summarizing:

  • Avatar (title icon, status color) + First and last name (link to profile)
  • Last visit chip: Seen 2 months ago / Never visited (color consistent with the palette)
  • Full address + label (Primary, Office, Second home...)
  • Address note if any (floor, entry code, instructions)
  • 3 main action buttons:
    • Navigate β†’ opens Google Maps, Waze or Apple Maps (the choice is offered on desktop)
    • Add a visit β†’ opens the add-interaction modal
    • Open profile β†’ opens the full profile

In plan mode, an extra Add to plan / Remove from plan button appears.

Multi-contact popup​

When several contacts share the same address (a family in one home), the popup shows the list of all members with their title icon. Click on a member to see their detailed profile.

GPS location​

If you allow location sharing in the browser, a pulsing blue marker appears at your position. It is refreshed continuously via navigator.geolocation.watchPosition.

The My location button in the SubHeader (and the compass FAB on mobile) recenters the map on you at zoom 15 (street).

Prepare a visit plan​

A visit plan is an ordered route of contacts to visit one after the other, with computed distance/duration and optionally saved in the database. It is the modern equivalent of the old Leaflet "tours".

Create a plan in selection mode​

  1. Click New plan in the SubHeader (route icon).
  2. The map switches to selection mode; the right-side Visit plan panel appears.
  3. Click on pins to add them to the plan. Each selected marker becomes a numbered pink circle indicating its current order.
  4. Once you have at least 2 stops, the Compute itinerary button draws a polyline connecting all points and shows estimated distance + duration at the top of the panel.
  5. Click Optimize (magic wand icon) to reorder stops via TSP (POST /contact/route/optimize, OpenRouteService).
  6. Drag & drop in the list to reorder manually if needed (numbers update in real time).
  7. Travel profile: On foot, By bike or By car (changes the computed distance and duration).

Export or print​

The Export button offers two formats:

FormatBehavior
Google MapsOpens a new tab with a multi-stop Google Maps itinerary ready to navigate (Google limit: ~10 stops per URL, beyond that the export truncates)
PDF (print)Shows a printable field sheet with an image of the current map, numbered list of stops, distance / duration. Use "Save as PDF" from your browser in the print dialog.

Save the plan​

The Save button (disk icon) opens a modal to name the plan and add a description. Once saved, the plan appears in My visit plans (see Visit plans) and can be:

  • Reopened on the map with its stops preselected
  • Started in field mode on the mobile app
  • Renamed, duplicated or deleted

Without saving, the plan stays ephemeral (lost on the next page reload).

The map on mobile​

The mobile app offers a fullscreen experience specifically designed for the field.

The fullscreen map on mobile, with floating FABs and the 'New plan' button.

Fullscreen layout​

No top toolbar: the map takes the whole window. A stack of floating FABs on the right gives access to the actions:

FABRole
list-checksOpens My visit plans
filterOpens the filters BottomSheet
searchOpens contact search (SearchContact modal)
compassGrouped menu: My location / Organization / See all
route (large, colored)New visit plan (toggles selection mode)

BottomSheets​

Tapping a marker opens a full-width BottomSheet (instead of a centered popup) with the main actions (Navigate, Add a visit, Open profile). The sheet closes by sliding down.

The filter FAB opens a sheet equivalent to the desktop filter panel: coloring mode, switches, search, multi-select.

Active navigation mode​

When you start a plan (from your plans list or directly by selecting contacts then tapping Optimize & start), the app switches to the Active plan screen (/mobile/contacts/tournee-active). See Visit plans for details on field mode (real-time ETA, "Visit done" sheet, voice notes).

Typical use cases​

Prepare the weekly tour​

  1. Coloring mode: Last visit.
  2. Spot all red pins (never seen) and purple ones (> 6 months) in your neighborhood.
  3. Click New plan then select 6 to 10 contacts.
  4. Optimize β†’ the order is reorganized to minimize the on-foot distance.
  5. Save under the name Thursday tour.
  6. On the day, open the mobile app β†’ My plans β†’ Start.

Spot contacts in a neighborhood​

  1. Type the postal code or city in the search (autocompleted).
  2. The map filters instantly to that area's contacts.
  3. Hover the red pins to identify priority contacts.

Target a category​

  1. Coloring mode: By category.
  2. Select Elderly in the Categories filter.
  3. The map shows only these contacts, each colored by their main category; the legend at the bottom-left recalls who is who.

Identify incomplete addresses​

When the geolocation badge stops (240 / 850), check the ratio: if you have 850 contacts in your base but only 720 on the map, you know there are 130 missing β€” usually because of empty or non-geocodable addresses.

Guided tour​

The page includes a guided tour of 10 steps (pulsing "Discover this page" button in the header). It covers the full workflow: filters, coloring, popup, clusters, plan creation, optimization, export, save.

On mobile, a separate tour of 8 steps guides the user through the fullscreen environment (FAB, BottomSheets, selection mode).

See Guided tours for details on the system.

Limitations​

  • Geocoding: depends on address quality. Very old, foreign or very specific addresses (hamlets) may not be found.
  • TSP optimization: capped at 50 stops per plan (free OpenRouteService quota). For a longer route, split into multiple plans.
  • Optimization quota: 2,500 calls / day per ORS account, across all users. Beyond that, the Optimize button returns an error until the next day.
  • Itinerary: does not account for real-time traffic, closures, updated one-way streets. It is an indicative path that helps you visualize and export β€” use Google Maps or Waze for actual navigation.
  • GPS location: accuracy and latency depend on the browser; on Android without "Precise location" permission, accuracy can drop to several hundred meters.
  • PDF export: uses the browser's print function; the final rendering depends on the print engine (Chrome, Safari, Firefox).