Summary
Every map in the app (the Map button, GeoDirectory map lists, and a directory list opened as a map) follows the same
rules on iOS and Android. Three app settings control the look, and three JSON keys let any plugin add a second row
of filter chips to a map. Everything here is optional, and every value is a JSON string, like every other app
setting (see Mobile JSON shape). Older app builds ignore the new keys.
App settings
All three are global app settings (App Settings, Misc section). Unset means the key is not sent and the app uses the
default.
| Setting | Values | Default | Effect |
|---|---|---|---|
map_pin_style |
"card", "callout" |
card |
Tapping a pin shows a card at the bottom of the map (photo, name, address, open status, distance, Directions / Call / Details). callout keeps the classic callout bubble. |
map_pin_force_default |
"yes", "no" |
no |
yes shows map_pin_url on every pin, ignoring listing, category, favorite and featured pins. |
list_show_map_switch |
"yes", "no" |
yes |
A map icon on directory list screens when at least one listing in the list has a location. It opens the list’s current rows (after chips and search) on a map. |
map_cluster_hide_directions = "yes" also hides the Directions button on the pin card.
Which pin a listing gets
The first one that is set wins:
map_pin_url, whenmap_pin_force_defaultis"yes".map_pin_favorite_url, when the listing is a favorite.map_url_for_featured_pin, when the row’sisFeaturedis"1".- The row’s
marker_pin(GeoDirectory sends the listing’s own pin, else its category pin). - The row’s
ct_cat_icon, thencategory_icon_url. map_pin_url(the app’s default pin).- A plain pin in the app’s accent colour.
Image pins are never recoloured. A selected pin is drawn a little larger. Pins close together are grouped into a
numbered cluster unless map_turn_off_google_map_clustering is "yes".
A row whose no_map is "yes" (or "1"), and a row with no coordinates or 0,0, never gets a pin. It still shows
in the list under the map.
Map filters
A plugin can add a second row of chips under the category chips. The app filters on the phone: there is no new
request.
On the button (or at the top level of the main JSON)
The button that opens the map or list carries the chips. When the button has none, the app looks for map_filters
at the top level of the main JSON.
"map_filters": [
{ "id": "stout", "title": "Stout" },
{ "id": "need_to_try", "title": "Need to Try" }
]
- The chips are hidden when
map_filtersis missing or has fewer than two entries. - There is no “All” chip. Chips toggle: tap one to turn it on, tap it again to turn it off. With none on (the
default), every pin shows. An entry with id"all"is not drawn.
On each row
"map_filter_values": { "stout": "6", "need_to_try": "2" },
"map_card_lines": { "all": "24 beers on tap", "stout": "6 stouts on tap", "need_to_try": "2 on your Need to Try" }
- Selecting a chip shows only the rows whose
map_filter_values[id]is present and is not"","0"or"no". - The filter chips combine with the category chips and the search (all must match).
- When every present value for the chip is a number, the list under the map is ordered by it, highest first.
Otherwise the list order does not change. - The pin card shows
map_card_lines[id]for the selected chip; with none on,map_card_lines["all"], else nothing. - Values are strings, even numbers. Both keys are objects keyed by chip id.
Who sends them
- mam-geodirectory: the Map filters setting on the GeoDirectory settings page (Rated 4+, Has upcoming events,
Featured). See GeoDirectory map filters. - Any plugin can add them through
mam_final_button_settings(button and rows) or the main JSON.
Related articles
- Content class: Map
- Listing screen keys: category filter bar and sort sheet
- Hook: mam_final_button_settings
- Mobile JSON shape
Metadata
| Field | Value |
|---|---|
| Article type | JSON Key Reference |
| Plugin slug | mam-main |
| Applies to plugin version | mam-main 26.42.20+ (settings); keys are read by the map redesign app builds |
| Category | App Settings Reference |
| Audience | App builder, PHP developer |
| Last verified | 2026-10-18 |
