Skip to main content

Markers

Markers overlay point symbols on top of any map — choropleth, highlight-only, or blank land. Pick from 30 built-in icons, add an optional label, and control label placement via the URL. Color, size, and rotation require the JSON body (POST /render/map).

All 30 icons at default size, placed in a grid across the world map:

https://api.maproll.io/map.png?scope=world&theme=light&width=1500&markers=70,-150:dot:dot:bottom%3B70,-90:square:square:bottom%3B70,-30:triangle:triangle:bottom%3B70,30:cross:cross:bottom%3B70,90:star:star:bottom%3B70,150:pin:pin:bottom%3B40,-150:flag:flag:bottom%3B40,-90:airport:airport:bottom%3B40,-30:anchor:anchor:bottom%3B40,30:car:car:bottom%3B40,90:bicycle:bicycle:bottom%3B40,150:helicopter:helicopter:bottom%3B10,-150:ship:ship:bottom%3B10,-90:train:train:bottom%3B10,-30:truck:truck:bottom%3B10,30:house:house:bottom%3B10,90:building:building:bottom%3B10,150:factory:factory:bottom%3B-20,-150:hospital:hospital:bottom%3B-20,-90:tank:tank:bottom%3B-20,-30:base:base:bottom%3B-20,30:bomb:bomb:bottom%3B-20,90:fist:fist:bottom%3B-20,150:soccer-ball:soccer-ball:bottom%3B-50,-150:megaphone:megaphone:bottom%3B-50,-90:mountain:mountain:bottom%3B-50,-30:fire:fire:bottom%3B-50,30:lightning:lightning:bottom%3B-50,90:warning:warning:bottom%3B-50,150:person:person:bottom
All 30 built-in marker icons

Icon library

GroupIcons
Generic shapesdot, square, triangle, cross, star
Locationpin, flag
Transportairport, anchor, car, bicycle, helicopter, ship, train, truck
Buildingshouse, building, factory, hospital
Military / conflicttank, base, bomb
Civic / activityfist, soccer-ball, megaphone
Nature / hazardmountain, fire, lightning, warning
Socialperson

Examples

Five markers with different icons and label positions:

https://api.maproll.io/map.svg?scope=world&theme=dark&markers=44.43,26.10:pin:Bucharest%3B52.52,13.40:airport:Berlin%3B38.90,-77.04:flag:Washington:left%3B-33.87,151.21:anchor:Sydney:bottom%3B35.68,139.69:star:Tokyo:top
Five markers with labels

Markers over a choropleth — icons draw on top of the fill layer:

https://api.maproll.io/map.svg?scope=world&data=DE:100,RO:80,US:200,AU:50,JP:90&theme=light&markers=44.43,26.10:pin:Bucharest%3B52.52,13.40:airport:Berlin
Markers over a choropleth

Parameters

ParamTypeDefaultAllowedNotes
markersstringSee URL syntax belowSemicolon-separated list of marker definitions
iconstringdotAny of the 30 icon namesURL-encoded as part of the marker token
labelstringUp to 64 charsOptional text drawn next to the icon
labelPositionstringrighttop, bottom, left, rightWhich side of the icon the label appears on
sizenumber121–200 (px)JSON body only — not available in the URL
colorstringtheme text color6-digit hex #rrggbbJSON body only — not available in the URL
rotationnumber0-360–360 (degrees)JSON body only — not available in the URL

URL syntax

markers=lat,lon[:icon][:label][:labelPosition];lat,lon[:icon][:label][:labelPosition];...

Field order within a token: lat,lon, then optionally icon, then label, then labelPosition. Omit any trailing field you don't need.

# Minimal: just a dot at a coordinate
markers=44.43,26.10

# Icon + label
markers=44.43,26.10:pin:Bucharest

# Icon + label + position
markers=44.43,26.10:pin:Bucharest:top

# Multiple markers (semicolon-separated; encode ; as %3B in a URL)
markers=44.43,26.10:pin:Bucharest%3B52.52,13.40:airport:Berlin

JSON body syntax

Use POST /render/map with markers: MarkerInput[] for per-marker color, size, and rotation:

{
"scope": "world",
"theme": "dark",
"markers": [
{ "lat": 44.43, "lon": 26.10, "icon": "pin", "label": "Bucharest", "color": "#ff0000", "size": 20 },
{ "lat": 52.52, "lon": 13.40, "icon": "airport", "label": "Berlin", "color": "#00ff00", "rotation": 45 }
]
}

Notes

  • size, color, and rotation are JSON-only. The URL syntax stays compact for the common case; per-marker styling requires the POST endpoint.
  • Off-screen markers are silently skipped. Points outside the projection's visible domain (e.g. clipped by the projection boundary) produce no output rather than an error.
  • Limit: 1000 markers per render. Exceeding this returns 400 invalid_markers.
  • Detailed icons at small sizes. Icons like car, helicopter, bicycle, and hospital lose distinguishing features below ~10 px. Prefer dot, square, triangle, star, or pin for dense sets where each marker is small.
  • Anchor, bicycle, and fist render as stroke (outline), not fill. All other icons are fill-based.
  • soccer-ball, hospital, and warning use fill-rule="evenodd" so inner subpaths cut holes (the medical cross, the warning !).
  • Each marker has a native <title> tooltip. Hovering in a browser shows the label text (or coordinates if no label).
  • Routes — draw great-circle paths between points; pairs naturally with endpoint markers
  • Annotations — add hover tooltip text to regions (not markers)
  • GET /map.{svg,png} — full query parameter reference
  • POST /render/map — JSON body schema for per-marker color and size