Mapped Places By Théodore Riant Wordpress Plugin - Rating, Reviews, Demo & Download
Plugin Description
Mapped Places turns a list of places into an interactive map your visitors can search and filter, with a list that follows the map and popups showing photos, contact details and opening hours. Add it with the Mapped Places Map block, the Elementor widget or the [mapped-places] shortcode.
Features:
- marker clusters coloured by entity, and entity pills to filter the map;
- a type filter with faceted counts;
- search with suggestions, insensitive to case, accents and apostrophes;
- a list synchronised with the map, and rich popups with a photo carousel;
- a responsive layout with a mobile toolbar, fullscreen mode, keyboard accessible;
- a Gutenberg block with a live preview in the editor, an Elementor widget with style controls, and a shortcode;
- basemaps from OpenFreeMap, OpenStreetMap, IGN, CARTO, Jawg, MapTiler, Stadia and Thunderforest, with a keyless fallback;
- a CSV import that geocodes addresses, imports photos, entity colours and type icons, plus a sample dataset to try it;
- a public read-only REST API (
mapped-places/v1).
Who is it for?
Networks and organisations with several sites (associations, public services, health or social care providers, franchises), directories and store locators, event venues, tourism offices: anyone who wants a map of their places that stays up to date from WordPress.
Places are a WordPress post type with taxonomies (entity with a colour, type with an icon, region, service, accessibility). Editors get geocoding with a draggable marker, a sortable photo gallery, one-click duplication and a CSV import.
No external CDN: Leaflet, MarkerCluster and MapLibre are bundled. The interface is in English and French.
Accessibility
The map can be used with the keyboard: search suggestions with arrow keys and Enter, place cards focusable, Escape to leave fullscreen. Results and toasts are announced to screen readers (aria-live), entity pills expose their state (aria-pressed), the carousel has labelled controls, and animations follow prefers-reduced-motion.
Developers
Every site-specific behaviour goes through filters (mapped_places_defaults, mapped_places_type_catalog, mapped_places_icons, mapped_places_import_columns, mapped_places_geocoder_url, mapped_places_place_slug, mapped_places_migration_steps and more), documented in docs/hooks.md on GitHub. The map is restyled by overriding --mapl-* CSS custom properties. The REST API is documented in docs/rest-api.md.
Site-specific behaviour (default values, icons, CSV columns, URL slugs, labels, data migrations) goes through filters, so a companion plugin can adapt Mapped Places without modifying it.
Privacy
No analytics, no tracking, no data sent to the plugin author. Visitors only reach the map tile provider selected by the site owner (see External services). Place data stays in the WordPress database. The Poppins font is served from the plugin (SIL Open Font License).
Source code and development
Development happens on GitHub: https://github.com/TheodoreRiant/mapped-places (source, issues, changelog, contribution guide). The plugin ships its readable sources; the only third-party code is in assets/vendor/, with each library’s licence and version.
External services
Mapped Places never sends anything to the plugin author. It relies on the third-party services below, and only to do what the site owner set up. Leaflet, MarkerCluster, MapLibre and the Poppins font are bundled with the plugin: no CDN, no external script.
Map tiles (basemap)
The map is drawn from tiles that the visitor’s browser downloads from the basemap provider chosen by the site owner in Places Map settings (or per map, in the block, widget or shortcode). This happens on every page that displays a map, each time the visitor pans or zooms.
What is sent to the provider: the coordinates of the tiles being viewed (map area and zoom level), the visitor’s IP address and browser headers, as with any image embedded in a page, and, for keyed providers, the site’s API key. No place data and no personal data from the WordPress site are sent.
Providers, with their terms and privacy policies:
- OpenFreeMap (tiles.openfreemap.org; default, used without a key, also the fallback when a keyed provider has no valid key; its conditions of use are stated on its home page): terms: https://openfreemap.org/, privacy: https://openfreemap.org/privacy/
- OpenStreetMap (tile.openstreetmap.org, OpenStreetMap Foundation, attribution https://www.openstreetmap.org/copyright, tile usage policy https://operations.osmfoundation.org/policies/tiles/): terms: https://osmfoundation.org/wiki/Terms_of_Use, privacy: https://osmfoundation.org/wiki/Privacy_Policy
- OpenStreetMap France (tile.openstreetmap.fr, run by the OpenStreetMap France association, used without a key): terms: https://wiki.openstreetmap.org/wiki/FR:Serveurs/tile.openstreetmap.fr, privacy: https://www.openstreetmap.fr/mentions-legales/
- IGN Géoplateforme (data.geopf.fr, French national mapping agency, raster and vector tiles): terms: https://cartes.gouv.fr/cgu/, privacy: https://www.ign.fr/institut/donnees-caractere-personnel
- CARTO (basemaps.cartocdn.com, API key required): terms: https://carto.com/legal/, privacy: https://carto.com/privacy/
- Jawg Maps (tile.jawg.io, API key required): terms: https://www.jawg.io/en/terms/, privacy: https://www.jawg.io/en/confidentiality/
- MapTiler (api.maptiler.com, API key required): terms: https://www.maptiler.com/terms/, privacy: https://www.maptiler.com/privacy-policy/
- Stadia Maps (tiles.stadiamaps.com, API key required): terms: https://stadiamaps.com/terms-of-service/, privacy: https://stadiamaps.com/privacy/privacy-policy/
- Thunderforest (tile.thunderforest.com, API key required): terms: https://www.thunderforest.com/terms/, privacy: https://www.thunderforest.com/privacy/
A keyed provider is only ever contacted if the site owner has selected it and entered a key. The site owner can also enter a custom tile URL: the provider is then whichever service they chose.
Geocoding (addresses to coordinates)
Only in the administration, never for visitors. When an editor imports a CSV file whose rows have no coordinates, or clicks Geocode address while editing a place, the postal address of that place (street, postal code, city) is sent to the Base Adresse Nationale geocoding API (api-adresse.data.gouv.fr), a French public service used without a key, which returns the coordinates. When an editor drags the marker on the location map, the reverse geocoding endpoint of the same API receives the coordinates and returns the address.
Terms: https://adresse.data.gouv.fr/cgu, privacy: https://adresse.data.gouv.fr/donnees-personnelles
The mapped_places_geocoder_url filter lets a developer point the CSV import to another GeoJSON geocoder (for example Nominatim, https://operations.osmfoundation.org/policies/nominatim/): the terms of that service then apply.
Screenshots
The map with its sidebar, entity pills, type icons and clusters.
A place popup with its photo carousel, contact details and opening hours.
Search with suggestions, insensitive to accents and case.
On a phone: search and type filter above the map, entity pills below them.
Editing a place: a form with the location (geocoding and a draggable marker), description, contact details, people and photos.
Map settings: basemap forced for the whole site and provider API key.
The Mapped Places Map block in the editor, with its live preview and settings.
The Elementor widget and its settings, with the live map in the Elementor editor.
