Obsidian Interactive Map Plugin
Overview
A highly customizable, offline-first Obsidian plugin designed to dynamically generate interactive Leaflet maps directly from vault note metadata (YAML frontmatter). Built to aid visualization of geospatial note distributions—such as job application tracking, company databases, or research locations—it renders vector choropleths, multi-country regional heatmaps, and city marker pins.
The plugin operates completely offline with zero external tile server dependencies by embedding a high-resolution 10m Natural Earth GeoJSON vector dataset. Clicking any region, country, or city pin triggers an embedded interactive data table overlay, allowing seamless vault navigation with normal clicks opening notes in place and Ctrl/Cmd + Click opening them in new tabs.
Features include customizable YAML frontmatter key mappings, flexible multi-country regional grouping via JSON settings, aggregated hover tooltips, and a local persistent geocoding cache with a rate-limited Nominatim fallback fetcher.
Visualization Modes & Capabilities
🌍 Countries Mode
Groups notes by country codes or names extracted from frontmatter fields (e.g. hq_country). Renders dynamic vector heat-colored polygons representing note density across international boundaries.
🗺️ Regions Mode
Aggregates notes into custom multi-country regional groupings (e.g., nordics, us-northeast, eastern-europe) configured through a simple JSON mapping in plugin settings.
📍 City Pins Mode
Geocodes specific city coordinates from note metadata (e.g. hq_city) and places interactive SVG map pins embedded with company/note count badges.
Aggregated Tooltips & Interactive Table Overlay
Hovering over any region, country polygon, or city pin displays an aggregated tooltip showing total note counts and category breakdowns (e.g. Tier 1: 5 | Tier 2: 3 | Tier 3: 1).
Clicking on any map marker or region opens an embedded temporary table overlay listing all matching notes. Users can view key metadata columns (such as tier, city, country, domain, fit score, or status) and navigate straight back to the map view using the ← Back to Map button.
Video Demonstration
Interactive Map Workflow in Obsidian
This video demonstrates dynamic vault note scanning, real-time map mode switching between regions and city pins, aggregated tooltip displays, and interactive data table filtering within Obsidian.
Architecture & Offline Design
100% Offline Vector Rendering: Unlike traditional web maps that rely on external image tile servers (e.g., OpenStreetMap or CartoDB tiles), this plugin bundles a high-resolution 10m Natural Earth GeoJSON vector dataset. Map views render locally with zero external network HTTP requests, ensuring complete data privacy and sub-second rendering inside offline vaults.
Rate-Limited Geocoding Engine: To place city pins accurately, the plugin ships with an offline lookup cache covering major tech cities globally. For unknown cities, it includes an integrated OpenStreetMap Nominatim fallback fetcher configured with a strict 1 request per second rate limiter and persistent local caching in data.json.
Configuration & Settings
The plugin settings panel (Obsidian Settings → Interactive Region & City Map) allows full customization of note parsing keys and display parameters:
| Setting | Description | Default |
|---|---|---|
| Source Folder | Vault folder containing notes to scan | 08_MISCELLANEOUS/Job Search/Companies |
| Point / City Key | Frontmatter field for city name | hq_city |
| Country Key | Frontmatter field for country name | hq_country |
| Region Key | Frontmatter field for region code | region |
| Category / Tier Key | Frontmatter field for tier/grouping | tier |
| Table Columns | Comma-separated frontmatter fields to show in overlay | tier, hq_city, hq_country, domain, fit_score, status |
| Region Mappings | JSON object mapping custom regions to country arrays | Global region mappings |
Source Code
Obsidian Interactive Map Plugin
The complete TypeScript codebase for the Obsidian Interactive Map plugin. It implements vault note parsing, Leaflet map rendering, offline GeoJSON polygon drawing, SVG marker creation, interactive table overlays, and Nominatim rate-limited geocoding.