Skip to Content
ReferenceMap data schema

Map data schema

A Mapplic map is described by a single JSON object — the map data. It holds the map’s settings, its layers and locations, and every supporting structure (filters, groups, styles, legend, breakpoints, languages and routes).

This page is the canonical reference for that object and each of its parts. To read or change this data at runtime see the JavaScript API.

💡
Location data can also be supplied as CSV and merged into the JSON — see the csv, csvEnabled and csvMerge settings.

Structure

The top-level map data object:

PropertyTypeDescription
settings *MapSettingsAll map configuration. See Settings.
layers *Layer[]The map’s layers (SVG or image). At least one is required.
locationsLocation[]Location markers placed on the layers.
presetsLocation[]Reusable location templates referenced by preset. See Presets.
groupsGroup[]Categories used to group and filter locations.
filtersFilter[]Filter controls shown in the directory.
legendLegendItem[]Legend entries.
stylesStyle[]Reusable appearance styles for SVG elements and markers.
breakpoints *Breakpoint[]Responsive layout breakpoints.
languagesLanguage[]Available languages for localization.
translationsTranslation[]Translation strings per language.
routesPath[]Wayfinding route segments.

Properties marked * are required. Everything else is optional.

Settings

The settings object holds the map’s configuration, grouped by area below. Options marked * are required; everything else is optional. Settings whose value belongs to a fixed set link to the enums.

Layers and map

NameSettingDescription
Map idmapIdIdentifier of the map.
Map widthmapWidth *Native width of the map (SVG/image) in pixels.
Map heightmapHeight *Native height of the map (SVG/image) in pixels.
LayerlayerId of the layer shown first.
Layer switcherlayerSwitcherConfigures the layer switcher control.
GeogeoEnable geographic (latitude/longitude) positioning.
ExtentextentGeographic bounds used to map latlon to map coordinates.

Locations and CSV

NameSettingDescription
CSV sourcecsvURL of a CSV file that provides location data.
CSV enabledcsvEnabledLoad locations from the CSV source.
CSV mergecsvMergeOn a duplicate id, overwrite the matching JSON location’s fields with the CSV values. When off, the duplicate CSV row is ignored (the JSON location is kept). CSV-only locations are added either way.

Search and filters

NameSettingDescription
SearchsearchEnable the location search box.
FiltersfiltersShow filter controls.
Always visiblefiltersAlwaysVisibleKeep the filters expanded and always visible.
OpenedfiltersOpenedOpen the filters panel initially.
Auto collapsefiltersAutoCollapseCollapse the filters automatically after interacting with the map.

Directory

NameSettingDescription
DirectorydirectoryShow the location directory. Replaces the deprecated sidebar.
Toggle directorytoggleDirectoryLet the user show/hide the directory.
Directory closeddirectoryClosedStart with the directory collapsed.
OrderedorderedSort directory entries alphabetically.
Group bygroupByGroup directory entries: groups or alphabetic (see enums).
Collapsible groupscollapsibleGroupsAllow collapsing directory groups.
Directory countsdirectoryCountsShow item counts on group headers.
Image as thumbnailimageAsThumbUse the location image as its directory thumbnail.
Right sidebarrightSidebarPlace the sidebar on the right.
Filter by layerfilterByLayerOnly list locations from the active layer.

Map interaction

NameSettingDescription
AccessibilityaccessibilityEnhance keyboard and screen-reader accessibility.
FullscreenfullscreenPosition of the fullscreen button: top-left, top-right, bottom-left, bottom-right, or omit to disable.
Hover tooltiphoverTooltipShow a tooltip when hovering a location.
Show about inshowAboutInWhere to show a location’s about text: tooltip, hover. Replaces the deprecated hoverAbout.
Show thumb inshowThumbInWhere to show thumbnails: tooltip, hover, directory. Replaces the deprecated thumbnails.
DeeplinkingdeeplinkingSync state to URL query parameters — true, or an array of location, group, wayfinding.
Scroll topscrollTopIn portrait mode, a vertical scroll offset so a fixed header doesn’t cover the map when it scrolls into view.
Reduce motionreduceMotionHonor the user’s reduced-motion preference.
KioskkioskKiosk mode: fill the viewport and limit some interactions.

Zoom and pan

Zooming and panning enhance visibility over static, fixed-size maps. Turning zoom off is possible when the map is clear enough not to need enlarging.

NameSettingDescription
ZoomzoomEnable zooming and panning.
Max zoommaxZoom *Maximum zoom level; 1 is the fit scale (map fits the container).
PaddingpaddingExtra padding (in pixels) around the map when zoomed all the way out.
Initial areainitAreaArea visible on load, as [x1, y1, x2, y2].
Reset buttonresetButtonPosition of the reset button: top-left, top-right, bottom-left, bottom-right, or omit to disable.
Zoom buttonszoomButtonsPosition of the +/- buttons (same positions as above) or omit to disable.
MousewheelmouseWheelEnable/disable mousewheel zooming.
Shift keymouseWheelShiftRequire the Shift key for mousewheel zooming.
Close resetcloseResetReset the zoom when a location is closed (loses focus).

Appearance

NameSettingDescription
Primary colorprimaryColorPrimary accent color (light theme).
Primary color (dark)primaryColor_darkPrimary accent color (dark theme).
ThemethemeInitial color theme.
Invert popup themeinvertPopupThemeInvert the popup’s theme for contrast.
RoundingroundingCorner radius (in pixels) for UI elements.
AnimationsanimationsAnimation level: full or reduced.
Custom CSScssCustom CSS injected into the map. See the Appearance guide.

Localization

NameSettingDescription
LanguagelanguageDefault language code.
LocalizationlocalizationShow the language switcher.

Legend

NameSettingDescription
LegendlegendShow the legend.
PositionlegendPosLegend position on the map.
TitlelegendTitleLegend heading text.
TogglelegendToggleAllow collapsing the legend.
ClosedlegendClosedStart with the legend collapsed.
ColumnslegendColumnsNumber of legend columns.

Live opening hours

Drives the open/closed status from each location’s hours.

NameSettingDescription
Live opening hoursliveOpeningHoursShow live open/closed status.
TimezonetimezoneIANA timezone used to evaluate hours.
Opening noticeopeningNoticeLead time to flag “opening soon”: 1h, 30m, 15m. Defaults to 1h.
Closing noticeclosingNoticeLead time to flag “closing soon”: 1h, 30m, 15m. Defaults to 1h.
Hours displayhoursDisplayHow hours are shown: button or inline. Defaults to button.
Week startweekStartFirst day of the week: dynamic, monday, sunday. Defaults to dynamic.

Wayfinding

💡
Wayfinding is a Professional-plan feature.
NameSettingDescription
WayfindingwayfindingEnable A→B wayfinding.
ControlswayfindingControlsPosition of the wayfinding controls (top-leftbottom-right) or false.
OpenedwayfindingOpenedOpen the wayfinding panel initially.
Line widthwayfindingLineWidthRoute line width in pixels.
Line colorwayfindingLineColorRoute line color.
SpeedwayfindingSpeedRoute animation speed.
SmoothingwayfindingSmoothingPath smoothing amount.
Fixed fromwayfindingFixedFromFixed starting location id.
Fixed from positionwayfindingFixedFromPosPosition of the fixed-start control or false.
AccessibilitywayfindingAccessibilityPrefer step-free routes.

Analytics

NameSettingDescription
AnalyticsanalyticsEnable analytics tracking.
Analytics URLanalyticsUrlCustom analytics endpoint URL.

Advanced

NameSettingDescription
Enable all linksenableAllLinksAllow all location links, overriding link restrictions.

Responsivity

A distinct layout can be configured at an unlimited number of breakpoints. Each breakpoint is a Breakpoint entry in the map data.

The breakpoint name is added to the component as a CSS class, so it can also be used for custom styling. For example, to hide the layer switcher on mobile:

.mobile .mapplic-layer-switcher { display: none; }

Deprecated aliases

These older keys still work but should be replaced:

DeprecatedUse instead
sidebardirectory
toggleSidebartoggleDirectory
sidebarCloseddirectoryClosed
thumbnailsshowThumbIn
hoverAboutshowAboutIn

Layer

A layer is one SVG file or raster image. The map renders one layer at a time; the layer switcher lets the user move between them.

PropertyTypeDescription
id *stringUnique layer identifier.
name *stringDisplay name, shown in the layer switcher.
filestringURL or path to the SVG/image file.
switchResetbooleanClose the open location and reset the zoom when switching to or from this layer.
disablebooleanDisable the layer — removed from the switcher, and its locations are not shown.

Location

A location is an interactive marker. Only id is required; presets and custom fields make the rest flexible. See the Locations guide for the task-oriented walkthrough.

PropertyTypeDescription
id *stringUnique location identifier. Matches the SVG element id for interactive vector locations.
presetstringId of a preset to inherit values from.
titlestringLocation name.
aboutstringShort description shown in the tooltip/hover.
descstringLonger rich-text description shown in the popup.
thumbstringThumbnail image URL.
imagestringFull image URL shown in the popup.
imagePlacement'background'Render image as the popup background.
enlargeableMediabooleanAllow popup media to be opened full-size.
popupThumbbooleanShow the thumbnail inside the popup.
actionLocationActionWhat happens on click (popup, redirect, switch layer, …).
popupTypePopupTypeWhere/how the popup is displayed.
linkstringURL opened for the redirect action or the “more” link.
targetstringLink target, e.g. _blank.
morestringCustom label for the link button.
tagsstring | string[]Tags used by filters and search.
groupstring | string[]Group name(s) this location belongs to.
layerstring | string[]Layer(s) the location appears on.
coordnumber[][x, y] position on the map.
latlonnumber[][lat, lon] position for geo-calibrated maps.
zoomnumberZoom level applied when the location is opened.
switchstringLayer id to switch to (for the switch-layer action).
colorstringMarker/accent color.
stylestringName of a style to apply.
scaleMode'screen' | 'map'Whether the marker scales with the screen or the map.
hoursstringOpening-hours definition (used by live opening hours).
phone, email, linkstringContact details.
facebook, instagram, youtube, gmapsstringSocial / maps links.
crowdingstringCrowding mode resolving marker overlap — hide, minimize, resize, uniform, or cluster.
ignoreMapFiltersbooleanExclude the location from filtering.
autoroutebooleanGenerate a wayfinding route automatically.
hidebooleanHide the location from the directory (it stays on the map).
disablebooleanDisable the location — no marker is rendered and its SVG element is not interactive.
💡
Locations may carry custom fields — any extra key beyond those above is preserved and available in popup/directory templates. See the Locations guide.

Marker configuration

These marker properties may be set on a location (or on a preset):

PropertyTypeDescription
noMarkerbooleanDon’t render a marker pin (interactive area only).
markerThumbbooleanUse the thumbnail image as the marker.
markerTitle'left' | 'right' | 'bottom' | 'dynamic'Position of the always-visible title label.
markerStylestringName of a style applied to the marker.
labelstringShort text drawn on the marker.
iconstringIcon/SVG id drawn in the marker.
radiusnumberMarker radius in pixels.
scalenumberMarker size multiplier.
rotationnumberMarker rotation in degrees.

Presets

presets is an array of Location objects used as templates. A location with a preset field inherits all of the named preset’s values, then overrides them with its own. This keeps repeated markers (e.g. every “restroom”) consistent and editable in one place.

Group

Groups categorize locations for the directory and the tags filter.

PropertyTypeDescription
name *stringGroup identifier, referenced by Location.group.
titlestringDisplay name.
colorstringGroup color.
iconstringGroup icon.
hidebooleanHide the group in the directory.

Filter

A filter is a control in the directory. Its type selects the behaviour — see FilterType. See the Directory guide for usage.

PropertyTypeDescription
id *stringUnique filter identifier.
type *FilterTypecheckbox, tags, alphabetic, dropdown or toggle.
namestringDisplay name.
showNamebooleanShow the filter’s name as a label.
valuestringInternal filter value.
logicstringMatching logic/condition.
includestring | string[]Restrict the filter to these values.
defaultstring | string[]Value(s) selected by default.
singlebooleanAllow only one selection at a time.
inlinebooleanRender inline.
toggleLayoutbooleanUse the chip/toggle layout.
disablebooleanHide the filter.

Style

A style is a named, reusable set of appearance properties applied to SVG elements or markers across three states — base, hover and active. See the Appearance guide.

PropertyTypeDescription
class *stringStyle name; the SVG/marker references it.
svgbooleanApply to matching SVG elements.
markerbooleanApply to matching markers.

State properties follow the pattern {state}-{property}, where {state} is base, hover or active:

SuffixTypeDescription
-colorstringFill color. A _dark variant (e.g. base-color_dark) sets the dark-theme color.
-strokestringStroke color (_dark variant supported).
-stroke-widthstringStroke width.
-textstringText color (_dark variant supported).
-effectsstring[]Named visual effects.
-cssstringRaw CSS applied in that state.
-bring-to-frontbooleanRaise the element above others (hover/active only).

Two base keys are irregular: the base stroke width is stroke-width (not base-stroke-width), and the base text color is text-color (not base-text).

Legend item

PropertyTypeDescription
id *stringUnique legend item identifier.
textstringLabel text.
colorstringSwatch color.
iconstringSwatch icon.
selectorstringCSS selector the item highlights.
actionstringAction triggered when the item is clicked.
defaultbooleanActive by default.
scalenumberSwatch size.
radiusnumberSwatch radius.
disablebooleanHide the item.

Breakpoint

Breakpoints define responsive layout at decreasing viewport widths. Also described, with a custom-CSS example, under Responsivity.

PropertyTypeDescription
name *stringUnique name; also added to the map element as a CSS class.
belownumberApplies when the container width falls below this pixel value.
portraitbooleanUse the portrait (stacked) layout instead of the sidebar layout.
containernumberMap container height in pixels.
sidebarnumberSidebar width in pixels (landscape layout).
type'list' | 'grid'Directory display type.
columnnumberNumber of directory columns.
elementnumberComponent height in portrait mode (map + directory).

Language

PropertyTypeDescription
code *stringLanguage code, e.g. en, de, fr.
namestringDisplay name.
flagstringFlag emoji or icon.

Translation

Each translation maps an original UI string to its translated value per language code.

PropertyTypeDescription
orig *stringThe original (source) string.
[code]stringTranslated value for each language code (e.g. de, fr).

Path

The routes array holds Path objects — individual route segments used by wayfinding.

PropertyTypeDescription
id *stringUnique route identifier.
layerstringLayer the segment belongs to.
pointsstringSVG points describing the path.
elementstringSVG element id the path is drawn from.
endpointstringLocation id this segment connects to.
connectbooleanMark the path as a layer connector — see Multi-layer support.
weightstringTraversal cost/weight.
inaccessiblebooleanMark the segment as not step-free.
oneway'>' | '<'One-way direction along the points.

Enums

Several fields and settings accept a fixed set of values:

TypeValuesUsed by
LocationActionnone, popup, switch-layer, redirect, mediaLocation.action
PopupTypemap, directory, container-left, container-right, container-bottom, container-centerLocation.popupType
FilterTypecheckbox, tags, alphabetic, dropdown, toggleFilter.type
ControlZonefalse, top-left, top-right, bottom-left, bottom-rightresetButton, zoomButtons, wayfindingControls, …
GroupModegroups, alphabeticgroupBy
Animationsfull, reducedanimations
DeeplinkingKeyslocation, group, wayfindingdeeplinking
HoursDisplaybutton, inlinehoursDisplay
WeekStartdynamic, monday, sundayweekStart
LiveHourStatusChangeNotice1h, 30m, 15mopeningNotice, closingNotice
AboutLocationtooltip, hovershowAboutIn
ThumbLocationtooltip, hover, directoryshowThumbIn
Last updated on