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:

SettingDescriptionDefault
Source FolderVault folder containing notes to scan08_MISCELLANEOUS/Job Search/Companies
Point / City KeyFrontmatter field for city namehq_city
Country KeyFrontmatter field for country namehq_country
Region KeyFrontmatter field for region coderegion
Category / Tier KeyFrontmatter field for tier/groupingtier
Table ColumnsComma-separated frontmatter fields to show in overlaytier, hq_city, hq_country, domain, fit_score, status
Region MappingsJSON object mapping custom regions to country arraysGlobal 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.

Dependencies / Tech Stack

Obsidian APITypeScriptLeafletGeoJSONesbuild

Modules & Components

Vault ParserScans specified vault subfolders and parses YAML frontmatter metadata from markdown notes.
Leaflet Map ControllerHandles vector layer styling, choropleth color scales, and custom SVG pin markers.
Table Overlay ManagerGenerates interactive table views with configurable metadata columns and workspace navigation.
Geocoding ServiceOffline city coordinate cache backed by a rate-limited Nominatim API fetcher.

Nuwantha Kumara

Mechanical Engineering student passionate about software development, simulations, and creating impactful solutions.

Connect

© 2026 Nuwantha Kumara. All rights reserved.

Built withNext.js