Maps
A map shows things you already hold — branches, installations, service partners, delivery addresses — on a base layer. It is a media type, so it has fields, a display and permissions like everything else.
Back office → Configuration → Maps for the base layers, Structure → Media types for the map type itself.
Where the points come from
Two ways, and the difference matters:
| Source | Behaves like |
|---|---|
| Points entered on the map item | Content — you place them, they stay |
| A listing | A query — the map shows whatever matches, now |
Prefer the listing
A map fed by a listing cannot go stale. Add a branch to the records and it is on the map; close one and it is not. A map with points typed onto it is a second copy of your addresses, and second copies drift.
Geo fields
A record carries a location in a geo field — a coordinate pair, usually alongside a normal address field. The address is for people; the coordinate is for the map.
Both, not one: an address geocoded on every render is a request per point and a dependency on somebody else's service; a coordinate with no address is unreadable to the person who has to drive there.
Base layers
The base layer is the map underneath. It is configured, not fixed — which matters commercially as much as technically, because tile providers have licences and rate limits, and the right answer differs per customer.
A base layer is somebody else's service
Check the licence and the usage limits of whatever you configure. A map that works in testing and rate-limits on a launch day is a configuration problem, not a platform one.
The platform's places
Countries, regions, districts, municipalities and postal codes are shipped as system vocabularies, every term with a coordinate. A record that carries a "District" field is therefore already on the map, and a listing of municipalities filtered by region draws exactly those municipalities.
The map style has three switches for large sets of places:
| Option | Does |
|---|---|
| Cluster nearby markers | Thousands of points become countable circles; zooming in breaks them apart |
| Search box | A box over the map that finds a region, district, municipality or postal code as you type and flies there |
| Marker popup: chain | The popup shows the place and its chain — municipality › district › region › country |
The reference example is the Maps page of the Claudia ERP showcase site: a listing of Slovak and Czech municipalities with a region filter, a district filter narrowed by the chosen region, the search box, clustering and the chain popup — every part of it configuration.
A placed map block has the same search box switch, so a firm's own coverage map answers "which of our branches serves this postal code" by typing the code.
A map of thousands of points does not weigh the page down: above a few hundred features the page carries only the base layer and the map fetches its points once it stands, with the same filters the visitor chose.
A position works the other way round too: given coordinates, the platform names the nearest municipality and post code (within 50 km), which is how a vehicle's location becomes an address on a fleet screen or in Claudia's answer.
Attribution
The place data comes from GeoNames (geonames.org) and Google's canonical country list, both under CC BY 4.0. A page that shows it names them.
A second source for Slovakia. GeoNames does not know every Slovak code — settlement units of
a town (Vysoké Tatry-Nová Polianka 059 83, Tatranská Kotlina 059 54, Banská Hodruša 966 63) carry
codes only the Slovak Post's own register lists. geo_sync --country SK --supplement reads that
register (posta.sk → PSČ → the ZIP with OBCE.xlsx, cached as posta-SK.zip) after GeoNames and
adds the codes that are still missing: each new code takes the point and the chain of the
municipality it names, so a zone, a shipment or a map treats it like any other. A code whose place
no municipality term names is reported in the command's output and never invented. A code the
register does not know either (ColdExpress 2026-09-04: 820 01, 919 31, 976 51) is not a Slovak
postal code — check the source list.
Streets — the sixth level. The same register lists every street of the towns whose code
differs street by street (Bratislava, Košice, Prešov, Žilina, Nitra, Trnava, Trenčín, Banská
Bystrica and others: 10 737 streets). geo_sync --country SK --supplement loads them as the
system vocabulary Streets (geo_streets): one term per street and municipality, labelled
"Hlavná, Trebišov (075 01)", knowing its postal code term, its municipality and the whole chain,
with the postal code's point. A street term is a plain term reference like any other level, so a
form may ask for the street and the platform answers the code; a street of a town no municipality
term names is reported in the command's output. The register writes municipalities its own way
("Bohdanovce n/Trnavou", "Krásnohor. Podhradie", "Trebišov 1") and GeoNames without a local name
writes them without diacritics ("Nova Dedina"); the sync matches through one folded key and a
district-scoped stem match, and founds a municipality from the register only when nothing matches —
Žitavany, which GeoNames lacks, comes from its streets' postal code.
What a visitor sees
A map is rendered live, so it follows the same visibility rules as the records behind it: an unpublished branch is not a point, and another organization's addresses are never on your map.
On a phone
Maps scroll and zoom inside their own frame. The page never scrolls sideways — that is a rule of the platform, not a per-map decision.