Places
approvedby bobstanton
Create interactive maps with markers, tracks, overlays, image alignment, heatmaps, VaultQuery data, CSV and GPX imports, custom styling, charts, search, directions, and provider extensions. - This plugin has not been manually reviewed by Obsidian staff.
Places
Manage points of interest, GPX and GeoJSON data in Obsidian notes and visualize them on maps.
Try in a sandbox: https://sandbox.obsidian.stanton.dev/places/

Places ecosystem
Rendering a map requires at least one plugin with the map capability.
| Plugin | Map | Search | Directions | Isochrones | Elevation | Snap | Track match |
|---|---|---|---|---|---|---|---|
| places-freeroute | yes | yes | yes | ||||
| places-geoapify | yes | yes | yes | yes | yes | yes | |
| places-leaflet | yes | ||||||
| places-mapbox | yes | yes | yes | yes | yes | yes | |
| places-maptiler | yes | yes | yes | ||||
| places-nominatim | yes | ||||||
| places-openfreemap | yes | ||||||
| places-openrouteservice | yes | yes | yes | yes | yes | ||
| places-radar | yes | yes | yes | ||||
| places-stadia | yes | yes | yes | yes | yes | yes | yes |
| places-thunderforest | yes | ||||||
| places-utilities | yes | ||||||
| places-environment |
Search covers geocoding and POI lookup. Elevation replaces missing or inaccurate elevation in a track. Snap corrects a track's geometry against the road or path network. Track match identifies the named ways a track follows, with the distance and the share of the track spent on each.
places-leaflet renders raster tiles; the other map providers render vector tiles.
places-environment supplies tide, solar, and weather data as charts, tables, templates, and
map data. places-utilities adds track classification, naming, playback, and editing.
Network requests
| Area | Request |
|---|---|
| Vector tile overlay source | Loads the TileJSON describing the tile source |
| Image overlay | Fetches the image and inlines it as a data URL |
| GPX, GeoJSON, CSV, or polyline overlay | Fetches the overlay content |
Background tasks
| Task | Schedule | Purpose |
|---|---|---|
| Map restore check | Every 2 seconds | Restores map surfaces that lost their WebGL context |
| Frequency analysis worker | While a heatmap block renders | Runs heatmap overlap analysis in a Web Worker, off the main thread |
| Query parameter playback | While a parameter is playing | Advances an animated query parameter at the interval the parameter defines |
Dependencies
| Library | Purpose |
|---|---|
| Chart.js | Elevation, speed, and pace charts |
| fastest-levenshtein | String distance for track similarity and name matching |
| obsidian-debug-logger | Scoped logging, gated behind the developer mode setting |
| placeholder-resolver | Resolves placeholders in label and note templates |
| places-shared | Shared map, overlay, routing, and utility code |
| zstd-wasm | Zstandard compression for overlay data stored in frontmatter |
Optional integrations
Resolved at runtime from the installed plugin.
| Plugin | Purpose |
|---|---|
| VaultQuery | SQL queries over vault notes as a map data source |
| Dataview | Dataview queries as a map data source |
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.