Skip to content
PNG
License

Spatly Marks are free to use in personal and commercial projects. Attribution is appreciated, not required. Do not resell the set as-is.

Map markers

Pin

A free SVG map marker icon from Spatly Marks, an original first-party kit. Recolour and export it below, or open it straight in the studio.

SVG source
html
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="32" height="32" data-mark="pin" aria-hidden="true" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M16 30C10.5 23.5 6 18.5 6 13a10 10 0 0 1 20 0c0 5.5-4.5 10.5-10 17z"/><circle cx="16" cy="13" r="2.5"/><path d="M16 5.5V8M16 18v2.5M8.5 13H11M21 13h2.5" stroke-linecap="butt"/></svg>

How to use Pin

MapLibre GL
ts
import { loadMarkImages } from "@spatly/marks";

map.on("load", async () => {
  await loadMarkImages(map, ["pin"]); // registers image "mark:pin" (SDF)
  map.addLayer({
    id: "pin-points",
    type: "symbol",
    source: "places",
    layout: { "icon-image": "mark:pin", "icon-size": 1, "icon-allow-overlap": true, "icon-anchor": "bottom" },
    paint: { "icon-color": "#e81860" }, // SDF markers recolor here
  });
});
Leaflet
ts
import { markDataUrl } from "@spatly/marks";

const icon = L.icon({
  iconUrl: markDataUrl("marker:pin", { size: 64, fill: "#e81860" }),
  iconSize: [32, 32],
  iconAnchor: [16, 32],
});
L.marker([41.0082, 28.9784], { icon }).addTo(map);
HTML
html
<!-- Paste the SVG straight in, or reference a saved file -->
<img src="pin.svg" width="32" height="32" alt="Pin" />
React
tsx
import { Mark } from "@spatly/marks";

<Mark name="marker:pin" size={32} />

Similar marks

Use Pin on your own map.

Spatly Marks power every layer and annotation in the studio. Drop a GeoJSON and place them on live data.

41.0082°N 28.9784°E · z 11.3 · ⟂ 0°