这个插件为 Obsidian.md 引入了一个交互式地图视图。 它搜索您的笔记中各种格式编码的地理位置和路径(见下文),将它们放在地图上,并提供许多工具与之交互。
它有效地将您的 Obsidian 库转变为一个个人 GIS 系统,为您的笔记、日志、旅行规划以及您使用 Obsidian 的几乎任何用途添加地理层。
您可以...
- 使用内置搜索添加位置(可选择利用 Google Places)。
- 从各种来源保存地理位置。
- 查看 GeoJSON、GPX、KML 和 TCX 格式的路径。
- 在地图上绘制位置和形状。
- 立即计算点之间的路线并获得驾驶/骑行/步行估算。
另外...
- 使用复杂的显示规则自定义标记图标、徽章、形状、颜色、路径属性等。
- 使用强大的查询系统。
- 在笔记中嵌入地图,具有很高的控制级别。
- 快速切换地图图层并保存预设。
- 保存地图以供离线使用。
还有更多,更多功能 -- 这是一个相当强大的工具。
我编写这个插件是因为我希望我不断增长的 Zettelkasten 能够回答以下问题...
- 当我收到关于值得参观的酷地方的推荐时,如何以一种能够在以后回忆起来的方式保存它们?
- 当我访问某个地方时,我知道该地区有哪些有趣的地方?
- 当我为规划旅行进行研究时,如何在地图上布局用餐、徒步或住宿的选择,将它们与先前的知识结合,并为将来参考保存它们?
地图视图可以与您的笔记流程集成,以回答所有这些问题以及更多问题。
正如 Obsidian 图表视图让您可视化某些笔记之间的关联关系一样,地图视图让您可视化地理关系。
本版本专门为中国用户优化,提供以下特色功能:
- 内置高德地图:默认提供高德地图作为地图源选项
- 坐标转换:自动处理 WGS84 到 GCJ02(火星坐标系)的坐标转换
- 智能检测:当使用包含"高德"或"autonavi.com"的地图源时自动应用坐标转换
- 完美兼容:所有标记、路径、搜索结果都能在高德地图上正确显示
- 完全中文化:界面、菜单、设置全部中文化
该插件目前的主要限制是 Obsidian Mobile 应用没有位置权限,因此在移动设备上您无法原生看到当前位置。
为了克服这一点,地图视图引入了配套的 Geo Helper 应用。
地图视图是一个功能强大的工具,有很多使用方法。 如果您想彻底学习它,可能想从 了解它的工作原理 开始。 但如果您想直接开始尝试,或快速了解它能做什么,请继续阅读。
以下是几种记录您想在地图中看到的喜爱位置的示例。
选项 1:从笔记开始
- 从一个笔记开始,例如您的每日笔记或涉及旅行计划的笔记,启动 Obsidian 命令面板并选择"地图视图:添加内联地理位置链接"。
- 一个格式为
[](geo:)的链接将添加到您的光标位置。 - 开始在括号内输入位置名称,一些地理位置结果将弹出。选择一个,您的 内联位置 就完成了。
(注意:默认的地理搜索提供商需要您填写电子邮件地址,更多详情请参阅 这里。)
选项 2:从地图开始
- 打开地图视图(例如从 Obsidian 丝带图标)。
- 搜索或定位位置,例如使用搜索工具。
- 右键单击地图并选择"在此创建新笔记(前置内容)"以创建记录选择点的笔记。
选项 3:从地图使用编辑模式
- 打开地图视图。
- 使用右侧的铅笔图标切换到编辑模式。
- 点击红色"选择笔记"按钮选择您要添加项目的笔记。
- 使用出现在铅笔图标下方的工具在地图上放置标记或其他形状。
- 在编辑模式下,您还可以移动或编辑其他标记和路径。
在地图视图中有许多其他记录地理位置的方法,更多详情请参阅 这里。
您可以使用许多流程来创建自定义地图,与它们交互并将它们用于研究和规划 -- 这是我通常用于旅行规划的一个流程。
步骤 1:记录一些位置。
对于大多数旅行,我喜欢使用带有分节的单个笔记,例如:
## 要参观的地方
- [地点 1](geo:...) tag:activity
- 关于这个地方的一些信息
- [地点 2](geo:...) tag:activity
- 关于这个地方的信息
## 要吃的地方
- [餐厅1](geo:...) tag:food
- 营业时间,其他数据...
- [餐厅2](geo:...) tag:food
- 营业时间,其他数据...
我使用上述方法之一添加地点(通过"添加内联地理位置链接"搜索)或下面描述的许多其他方法之一。 注意 内联标签,这些可以用于自定义过滤器和/或为不同类型的地方创建不同的图标。
步骤 2:绘制它们!
对于单个笔记,只需点击笔记的菜单(3 个点)并选择"在地图视图中聚焦(笔记名称)"。 您应该立即看到所有位置的地图,如果您花一些时间配置 标记图标,您可以轻松为各种标签获得不同的形状和颜色。
步骤 3:保存此地图
您在这里有几个选项。
您可以做的一件事是打开地图上的预设部分并保存当前视图,然后随时从地图视图打开它。
另一个选项是保存嵌入:在预设中点击"复制块"(或从笔记菜单中"复制地图视图代码块"),然后将结果代码粘贴到笔记中。
有许多其他构建旅行计划、展示和使用它的选项。 这篇 帖子给出了更详细的示例,深入了解地图视图工作原理的细节将帮助您找到自己的最佳流程。
使用地图视图的最强大方式是从您的笔记库构建完整的个人 GIS(地理信息系统)。 我个人按如下方式进行。
1. 收集
这部分不是地图视图特有的,但主要思想是我从各种来源 收集 信息片段,这些信息通常包含一些地理信息。
例如,我可以保存推荐新餐厅的 Facebook 帖子,从徒步团体剪辑酷炫的徒步路线,或者当朋友告诉我一个我想记住的地方时起草快速笔记。
我稍后将这些转化为笔记,但当然如果这不是您的做事方式,您可以跳到处理。
2. 处理
当我将我剪辑的信息片段转化为笔记时,我按如下方式添加地理位置。
- 对于 主要是地理性 的信息片段,例如餐厅推荐、徒步路线或我可能想访问的地方,我创建一个 Zettelkasten 笔记,然后使用地图视图"向当前笔记添加地理位置(前置内容)"来标记相关的地理位置。
- 如果位置不容易通过文本搜索找到,我通常打开更具体的映射工具,如徒步地图,定位我想要的地方,以 lat,lng 格式复制它并粘贴到上面的同一搜索框中。
- 或者,我有时更喜欢在地图上定位它,然后右键单击并"复制地理位置为前置内容"(或首先从地图创建笔记)。
- 然后我用一些有用的元数据标记完整的笔记。示例包括:
#hike、#season/spring、#dogs、#camping、#food、#food/pizza、#activity、#activity/kids、#not(用于负面推荐)。
- 对于大量地理信息,如城市中推荐咖啡店的列表,我创建一个笔记并通过内联地理位置链接添加所有地理位置。我将"添加内联地理位置链接"命令映射到
Alt+L,这样我可以在输入笔记时轻松开始位置搜索。
3. 查询
我查询个人 GIS 的场合无数。
- 在规划旅行时,我经常查看我要访问的区域,有时在不应用任何过滤器的情况下将其保存为预设,并大致了解我对该区域的了解。
- 我经常查询系统以满足特定需求。例如,我痴迷地收集我居住地周围适合狗的活动信息,所以当我想去露营时,我查询
#dogs AND #sleep(搜索适合狗的露营地),选择用餐选项时我查询#dogs AND #food。请参阅 这里 了解查询如何工作以及您可以用它们做什么。 - 在访问未知区域时,我经常从 Obsidian Mobile 启动地图视图,以应对计划变更或在没有提前规划的情况下找到要做的事情。
另请参阅关于使用地图视图规划假期的 这篇 Reddit 帖子。
地图视图提供 几种在笔记中记录位置的方法,可以为您管理技术细节。 如果您想直接开始,可以跳到该部分,或继续阅读下面更技术性的解释。
澄清一下,使用地图视图的最佳方式是永远不要手动输入地理位置。 但是,您需要了解前置内容和内联格式之间的区别,并决定何时使用哪个。
因此,插件通过扫描您的笔记并解析两种类型的位置数据来工作。
首先是笔记 前置内容 中的位置标签:
---
location: 40.6892494,-74.0466891
---这对于表示单个特定位置的笔记很有用。
还有地图视图以前使用的替代语法:location: [40.6892494, -74.0466891]。虽然此格式与 obsidian-leaflet 兼容,但它与 Obsidian 的属性编辑器配合不太好。两种格式都受支持,但对于 Obsidian 版本 1.4 及以上鼓励使用新格式。
插件解析位置数据的另一种方式是通过格式为 [链接名称](geo:40.68,-74.04) 的内联位置 URL,它允许同一笔记中有多个标记。
为了防止需要扫描所有笔记的完整内容,它需要在笔记前置内容中有一个空的 locations: 标签('locations' 而不是 'location')。
(在大多数输入地理位置的方法中,地图视图会自动执行此操作。)
示例:
---
locations:
---
# 旅行计划
点 1:[哈德逊河](geo:42.277578,-76.1598107)
... 更多笔记内容 ...
点 2:[纽黑文](geo:41.2982672,-72.9991356)具有多个标记的笔记将在地图上包含具有相同笔记名称的多个标记,点击标记将跳转到笔记中的正确位置。
内联位置还支持格式为 tag:dogs(不带 # 符号)的内联标签。例如:
点 1:[哈德逊河](geo:42.277578,-76.1598107) tag:dogs这将向该特定点添加标签 #dogs,无论笔记自己的标签如何。
这对于包含不同类型标签的笔记很有用(例如包含各种类型位置的旅行日志)。
注意 tag: 格式应该不带 # 符号使用,因为这会为整个笔记设置标签。
地图视图将在内部为查询和标记图标的目的添加 #,如下面所解释的。
多个内联标签可以用空格分隔:[](geo:42.2,-76.15) tag:dogs tag:trip。
多个内联位置可以添加在同一行中,跟随它们的标签将与左侧的位置关联,但右键单击编辑器上下文菜单将不知道选择被选中的位置。
您可以使用自定义笔记标签代替使用 locations: YAML 标签。请参阅设置中的"标记内联地理位置的标签名"。(这也适用于通配符。)
它不会像 locations: YAML 标签那样在您需要时自动添加,但是如果您向找到自定义标签的现有笔记添加内联地理位置,地图视图将不会添加 locations: YAML 标签。
重要注意: 目前,使用此功能(即具有非空的"标记内联地理位置的标签名")会使地图视图变慢一个数量级。我正在寻找在未来版本中加速它的方法。
为了与 Obsidian 的属性编辑器和可能的其他插件互操作,地图视图还将解析以下语法:
location:
- '39.100105'
- '-94.5781416'以及:
location:
- 39.100105,-94.5781416地图视图提供许多向笔记添加地理位置的方法。
地图视图向 Obsidian 添加了一个名为"新地理位置笔记"的命令,您可以将其映射到热键并在 Obsidian 的任何地方使用。
这会打开一个对话框,您可以在其中搜索(基于您 配置的地理编码提供商 的地址或位置)或使用内置或自定义 URL 解析规则 粘贴 URL。
有多种方法向现有笔记添加地理位置。
- 创建格式为
[](geo:)的内联地理位置链接,如果您开始在链接名称(括号)内输入,地图视图将启动位置搜索。如果您确认其中一个选项,它将填入位置的坐标。有关更多信息,请参阅下面的 "笔记内位置搜索" 部分。
为了使这更简化,地图视图向 Obsidian 添加了一个名为"添加内联地理位置链接"的命令,您可以将其映射到键盘快捷键。
-
通过使用 Obsidian 命令"向当前笔记添加地理位置(前置内容)"添加前置内容地理位置。这会打开与"新地理位置笔记"相同的对话框,允许您搜索位置名称或粘贴 URL 解析规则。
-
如果您在其他地图服务中有想要记录的地理位置,例如来自 Google 地图,您可以从该服务复制 URL 或"lat,lng"地理位置,在笔记中右键单击并选择"粘贴为地理位置"。支持的服务是可配置的,更多详情请参阅 下面。
地图提供几种工具来创建笔记或向现有笔记添加标记。
- 右键单击地图时使用"在此创建新笔记"。这将创建一个新笔记(基于您可以在设置中更改的模板),其中包含您点击的位置。您可以创建带有前置内容(单个地理位置)的空笔记或带有内联地理位置的空笔记。
可以使用右上方的工具搜索地图,因此您可以快速跳转到要标记的地方。 URL 解析规则 在这里也起作用,因此您可以 从 Google 地图复制地理位置(或任何其他服务)并跳转到它。
-
使用编辑模式:点击右侧的铅笔图标,通过点击左侧的红色按钮选择要编辑的笔记,然后使用铅笔图标下方的标记工具添加标记(或其他形状)。或者,在编辑模式下,您可以右键单击地图上的任何地方并选择"添加到编辑模式笔记"。
-
如果您更喜欢以文本形式输入地理位置,请在右键单击地图时使用"复制地理位置"选项之一,并将它们粘贴到笔记中。
地图视图监控系统剪贴板,当检测到它包含编码的地理位置(例如 Google 地图"lat, lng"位置)时,会向编辑器上下文菜单添加"粘贴为地理位置"条目。 例如,如果您在 Google 地图中右键单击某个位置并点击菜单中的第一项(lat,lng 格式的坐标,请参阅 下面),您然后可以在笔记中将其粘贴为地理位置。
或者,您可以右键单击笔记中已存在的 URL 或支持的格式化字符串,并选择"转换为地理位置"。
默认情况下,地图视图可以解析来自两个服务的 URL:OpenStreetMap"显示地址"链接和许多 URL 使用的通用"lat, lng"编码。
桌面网页版 Google 地图为复制通用 lat, lng 坐标提供了非常简单的快捷方式。
- 在 Google 地图中右键单击任何地方。
- 第一个菜单项应该是通用坐标。点击它,坐标就会复制到剪贴板。
- 在任何 Obsidian 笔记中,右键单击并选择"粘贴为地理位置",或将坐标粘贴到任何地图视图搜索框中。
地图视图支持 Obsidian 代码块格式在笔记中嵌入地图。 有几种方法可以做到这一点:
- 嵌入现有地图。 要嵌入来自地图视图的现有地图,包括其查询和任何其他设置,请从地图的预设下拉菜单中点击"复制块"并将块粘贴到笔记中。
- 直接从笔记嵌入。 从编辑器,右键单击并从上下文菜单中选择"嵌入地图视图",然后输入将用于地图中心的搜索词。或者,有一个名为"地图视图:添加嵌入地图"的 Obsidian 命令,您可以将其分配给键盘快捷键。
一旦地图嵌入到笔记中,它就代表一个根据您的笔记更新的实时视图。 在查看区域中添加或修改的地理位置,并匹配嵌入中保存的查询,将实时更新。
您可以从嵌入内对视图进行轻微调整(更改其缩放、平移或高度),如果您希望保存这些调整,请点击将出现的"保存"按钮。
要进行更大的调整,例如更新查询或完全更改视图,请使用"打开"按钮,进行更改,然后在嵌入的视图菜单中点击"从打开的地图视图更新"。 注意,如果您有多个地图视图的完整实例打开,"从打开的地图视图更新"可能不会按您预期的那样工作,您可能需要首先关闭不需要的视图。
嵌入在 Canvas 中也工作得很好,包括实时更新。
- 嵌入地图中的查询字段支持模板参数
$filename$。例如,如果您希望在笔记模板中嵌入地图,您可以编辑代码块的query字段为"query":"linkedfrom:\"$filename$\" OR linkedto:\"$filename$\"",地图将始终引用主机笔记。
已知烦恼: $filename$ 替换目前在处理代码块时执行,并作为最终结果发送到地图视图。因此,如果您交互式编辑嵌入(例如通过缩放或平移并点击保存),query 字段将被实际文件名覆盖,而不是模板。
-
嵌入地图代码块中的 JSON 支持
autoFit布尔标志。当设置为true(即向代码块的 JSON 添加"autoFit":true)时,地图将以给定的平移和缩放加载,但然后将执行自动适应并覆盖进一步的缩放和平移更改。如果保存的状态与自动适应的状态不同,这会有缩放/平移动画的烦恼(在这种情况下点击保存以冻结新状态)。我最终想将这个很好地集成到 UI 中,具有一些更合理的行为。 -
嵌入地图代码块还支持可选的
customViewSettings对象,它允许对地图的 UI 进行一些调整。属性及其默认值在embeddedMap.ts中定义。
地图视图支持各种格式和使用模式的路径。 与标记有些类似,独立路径文件和内联路径之间有区别。
独立路径文件可以是您库中的任何 GPX、KML、TCX 或 GeoJSON 文件。 与前置内容地理位置有些类似,地图视图从您的库中收集所有内容,并基于 显示规则 和 过滤器 显示路径。
没有任何过滤器存在,使用默认设置,您库中任何支持的路径文件都将使用默认路径显示样式显示。
独立路径可以使用许多查询运算符如 path、name 和 linkedfrom 包含或排除。
独立路径没有标签的概念,因此为了对它们应用显示规则,您有几个其他选项:
- 在文件名中包含相关字符串并使用
path或name运算符。 - 使用
linkedfrom运算符,例如有一个链接到所有 GPX 轨道的"我的跑步"笔记,并使用linkedfrom:"我的跑步"对这些路径应用显示规则。
以下是向您的库添加独立路径的几个选项:
- 使用 Obsidian 的"插入附件"命令将路径文件(例如 GPX)作为嵌入插入到您正在工作的笔记中。虽然路径不需要从笔记中引用才能在地图中显示,但将路径放在上下文中通常很有用,这个命令一步就将文件复制到库中并将其添加到笔记中。
- 从地图视图,通过点击右侧的铅笔图标进入编辑模式,点击文件图标,然后点击"导入路径作为库附件"。选定的文件将添加到您的默认附件文件夹下的库中。
- 只需使用系统的文件资源管理器将文件复制到您的库中。它应该会自动识别并出现。
地图视图支持使用类型为 geojson 的代码块存储在笔记中的 GeoJSON 路径。
默认情况下,类型为 geojson 的围栏代码块将由地图视图在笔记内渲染。
与独立路径文件不同,内联路径通过在代码块下方添加格式为 tag:a tag:b 的行来支持标签。
此外,内联路径的另一个优势是它们可以使用编辑模式工具进行修改。
例如,以下代码块定义了一条带有标签 #hike 的线:
```geojson
{
"type": "Feature",
"properties": {},
"geometry": {
"type": "LineString",
"coordinates": [
[
13.754839,
42.030225
],
[
14.033704,
42.045011
]
]
}
}
```
tag:hike向笔记添加内联路径的最简单方法是使用地图视图的编辑模式。 要进入编辑模式,点击右侧的铅笔按钮,或左侧的"编辑"下拉菜单。然后选择要编辑的笔记。 从那里您可以:
- 使用右侧的编辑模式工具在地图上绘制路径。完成后,路径将添加到选定的笔记中。
- 从右侧的编辑模式工具中,点击文件图标,然后点击"导入路径并添加到编辑模式笔记"。路径将转换为 GeoJSON 并作为内联路径添加到您选定的笔记中。
(注意:如果路径被当前过滤器排除,您不会看到路径出现。)
与标记类似,路径在地图上的显示方式可以使用强大的 显示规则 进行大量自定义。 在这方面,标记和路径之间有两个主要区别:
- 路径有不同的可用于样式化的属性。
- 独立路径文件不支持标签,因此为了用显示规则引用它们,您需要使用名称或
linkedto查询。
更多详情请参阅 这里。
地图视图支持与 Obsidian 查询格式大致相似的强大查询。
查询字符串可以包含以下 搜索运算符:
tag:#...搜索用特定标签标记的笔记或标记。- 这适用于整个笔记(
#hiking)和特定标记的内联标签(tag:hiking)。 - 您也可以使用通配符,如 标签规则 中的那样,例如
tag:#sleep*将匹配#sleep但也匹配#sleep/camping。
- 这适用于整个笔记(
name:...搜索名称包含给定字符串的标记。- 对于前置内容地理位置,这匹配文件名。
- 对于内联地理位置,这匹配链接名称并忽略文件名(如果您想始终匹配文件名,请与
path:一起使用OR)。
path:...按笔记路径搜索。- 此运算符将包括路径匹配查询的所有标记。
linkedto:...包括包含特定链接的笔记。- 此运算符将包括具有匹配查询的链接名称的笔记(及其中的所有标记)。
- 例如,如果您有一个名为
洞穴徒步的笔记,并且您有链接到它的地理定位笔记(例如包含[[洞穴徒步]]作为链接),请通过过滤器linkedto:"洞穴徒步"包含它们。 - 任何解析为合法 Obsidian 链接的内容都将工作,例如笔记名称('洞穴徒步')或路径都可以,但部分名称不行。
linkedfrom:...包括从特定笔记链接的笔记,以及原始笔记本身。- 此运算符将包括从查询中提到的笔记链接的笔记(及其中的所有标记)。
- 例如,如果您有一个名为
意大利之旅的笔记,其中包含到各种地理定位笔记的链接(例如您想访问的地方或旅行日志),查询linkedfrom:"意大利之旅"将仅过滤这些标记。 - 任何解析为合法 Obsidian 链接的内容都将工作,例如笔记名称('洞穴徒步')或路径都可以,但部分名称不行。
- 支持 Obsidian 标题和块链接:如果'from'文件中的链接包含标题或块链接,它将仅匹配该标题或块内的前置内容标记或内联标记。
- Obsidian 插件 "复制块链接" 使这个额外有用。
lines:x-y仅包括在其笔记中给定行范围内定义的内联标记。- 例如,
lines:20-30仅包括在包含它们的文件的第 20 到 30 行中定义的内联地理位置。
- 例如,
所有运算符都不区分大小写。
您可以将上述内容与 逻辑运算符 结合:AND、OR、NOT,以及使用括号分组。
这与 Obsidian 自己的查询语言不同,Obsidian 使用 - 而不是 NOT,并将空格视为 'AND'。
示例:
linkedfrom:"意大利之旅" AND tag:#wine可以包括您从意大利之旅链接的地方,或在该笔记本身内,并标记有#wine。tag:#hike AND tag:#dogs可以包括您标记为适合狗的徒步。tag:#hike AND (tag:#dogs OR tag:#amazing) AND NOT path:"坏地方"
有许多创造性的方法来组织带有地理位置的笔记,利用这些查询能力。
您可以用标签表示位置类型(例如 #hike 或 #restaurant),或使用标签表示地方的特征(#hike/summer、#hike/easy)。
您可以使用路径进行索引,使用 Zettelkasten 反向链接(例如从您想要表示的笔记链接到"我想要的徒步"),然后使用 linkedto: 找到链接到它的地方。
和/或您可以有笔记来规划旅行并从中链接到地方,然后使用 linkedfrom: 专注于您的计划。
在所有情况下,您都可以 保存预设,包括过滤器或其子过滤器。
地图视图包括一个强大的机制,允许您基于灵活的规则系统自定义地图标记和路径显示属性。 这些被称为显示规则。
显示规则由一个查询组成,这与 这里 讨论的相同,以及要应用到匹配查询的标记或路径的各种属性。 当地图视图尝试决定如何显示标记或路径时,它从默认显示规则开始,该规则具有某一组属性(例如带有圆圈的蓝色标记)。然后它按顺序测试其余的显示规则,对于每个匹配查询的规则,覆盖该规则设置的任何属性。
例如,标记的默认规则可能是带有 fa-circle 图标的蓝色标记颜色。如果标记还匹配默认规则下面的规则(例如像 tag:#food 这样的规则),并且该规则只将图标设置为 fa-utensils,则结果标记将是蓝色的(因为第二个规则没有覆盖颜色)带有 fa-utensils 图标。
(注意对于 6.0.0 版本之前的地图视图用户:这与标记图标之前的工作方式相同,除了规则使用 查询 而不是标签,允许更多灵活性。)
要编辑显示规则,请打开插件设置,并点击"标记和路径显示规则"部分下的按钮。 您将看到当前活动规则的列表。您可以添加新规则、更改规则顺序(除了必须是第一个的默认规则)以及编辑现有规则。 编辑规则时,您将能够设置规则可以应用的各种属性。所有这些属性都是可选的,并将覆盖匹配其查询的每个标记或路径的默认(或先前匹配规则)。
图标基于 表情符号 或 Font Awesome,因此要添加标记图标,您需要复制表情符号或在 Font Awesome 目录中找到名称。 此外,还有各种基于 Leaflet Awesome Markers 的标记属性(形状、颜色等)。
详细文档请参阅 下面 的部分。
对于路径,有各种样式选项可用于线条颜色、宽度等。
详细文档请参阅 下面 的部分。
预设让您保存当前地图状态(查询、缩放、位置)并稍后恢复。
使用控制面板中的预设部分。
- 点击"保存当前"以保存当前地图状态。
- 点击预设旁边的 ✓ 以加载它。
- 点击"设为默认"以使地图视图始终以此状态打开。
- 点击"复制块"以获取用于 嵌入地图 的代码块。
(注意:预设支持可选的 ID,这样如果您在多个设备上使用 Obsidian,相同的预设可以在所有设备上可用。要设置 ID,请编辑预设的名称以包含 |ID,例如 我的地图|abc123。具有相同 ID 的预设将在设备之间同步。)
地图视图使用 Font Awesome 图标,您可以在显示规则中引用它们以创建自定义标记图标。
要设置标记图标,请创建一个 显示规则,在其中设置图标字段为相关的 Font Awesome 名称,例如 fa-camera。
除了图标之外,您还可以设置标记形状和颜色(在相同的显示规则或另一个规则中)。
可用的标记形状包括:
circle(圆形)square(正方形)star(星形)penta(五边形)
可用的标记颜色包括:
red(红色)darkred(深红)lightred(浅红)orange(橙色)beige(米色)green(绿色)darkgreen(深绿)lightgreen(浅绿)blue(蓝色)darkblue(深蓝)lightblue(浅蓝)purple(紫色)darkpurple(深紫)pink(粉色)cadetblue(军蓝)white(白色)gray(灰色)lightgray(浅灰)black(黑色)
您还可以通过在显示规则中设置"标记大小"字段来设置相对标记大小。值为 tiny、small、normal、large 或 extra-large。
地图视图还支持标记徽章,即添加到标记底部的小图标或文本。
这些可以在显示规则中设置,类似于标记图标。如果设置徽章,您可以设置:
- 图标或文本:徽章图标(使用 Font Awesome 名称如
fa-camera)或要显示的徽章文本。 - 背景颜色:徽章的背景颜色,使用与标记颜色相同的颜色名称。
更多详情请参阅 文档中的此部分。
对于路径,地图视图支持以下显示规则属性:
- 线条颜色:路径的颜色,使用标准颜色名称如
red、blue等,或十六进制颜色如#ff0000。 - 线条宽度:路径的宽度(以像素为单位),例如
3。 - 线条不透明度:路径的不透明度,从 0.0(完全透明)到 1.0(完全不透明)。
- 线条样式:路径的样式,可以是
solid、dashed或dotted。
更多详情请参阅 文档中的此部分。
地图视图内置了位置搜索功能,可以在多个地方使用:
- 在地图搜索框中
- 在"添加内联地理位置链接"对话框中
- 直接在笔记中输入
[](geo:)格式的链接时
默认情况下,地图视图使用 OpenStreetMap 的 Nominatim 服务进行地理编码。但是,您可以在设置中将其更改为 Google Places 或 Google Geocoding。
要使用 Google 服务,您需要:
- 获取 Google Maps API 密钥
- 在插件设置中输入 API 密钥
- 选择您想要的 Google 服务
注意:使用 Google 服务可能会产生费用,请查看 Google 的定价信息。
您可以配置自定义"在...中打开"操作,这些操作将出现在标记的右键菜单中。这允许您在外部应用程序或网站中打开位置。
要添加自定义"在...中打开"操作:
- 转到插件设置
- 找到"自定义'在...中打开'操作"部分
- 添加一个新操作,指定名称和 URL 模板
URL 模板可以包含以下占位符:
{lat}- 纬度{lng}- 经度{name}- 位置名称
例如,要添加在百度地图中打开的操作,您可以使用:
- 名称:
百度地图 - URL:
https://api.map.baidu.com/marker?location={lat},{lng}&title={name}
地图视图可以解析来自各种地图服务的 URL,以提取地理位置信息。您可以配置自定义 URL 解析规则以支持其他服务。
内置支持的服务包括:
- Google 地图
- OpenStreetMap
- Apple 地图
- 通用 lat,lng 格式
要添加自定义 URL 解析规则,请转到插件设置并查找"URL 解析规则"部分。
警告! 这是一个实验性功能,效果可能因人而异。 使用前请确保阅读 文档。
地图视图支持实时 GPS 位置,但由于 Obsidian Mobile 的限制,这需要配套应用程序。
在桌面版中,您可以使用浏览器的地理定位 API(如果可用)。在移动设备上,您需要使用 Geo Helper 应用程序。
要启用 GPS 支持:
- 在插件设置中启用"启用实验性 GPS 支持"
- 配置地理助手类型(命令行或 URL)
- 根据您的设置配置相应的命令或 URL
地图视图支持下载地图瓦片以供离线使用。这在没有互联网连接的地区旅行时特别有用。
要使用离线地图:
- 转到插件设置中的"离线地图"部分
- 点击"管理离线存储"
- 选择要下载的区域和缩放级别
- 开始下载过程
您还可以配置:
- 自动缓存:自动缓存您查看的瓦片
- 自动清除:自动删除旧瓦片以节省空间
- 最大存储:设置离线瓦片的最大存储限制
如果您遇到问题,可以在插件设置中启用调试日志。这将在 Obsidian 的控制台中输出详细信息,可以帮助诊断问题。
地图视图提供许多高级自定义选项:
- 新笔记模板:自定义从地图创建新笔记时使用的模板
- 标记聚类:配置如何聚类附近的标记
- 查询格式:自定义"跟随活跃笔记"功能的查询格式
- 前置内容修复:配置粘贴地理位置时如何处理前置内容
-
标记没有出现在地图上
- 检查您的查询过滤器是否排除了标记
- 验证地理位置格式是否正确
- 确保笔记包含
locations:前置内容标签(对于内联位置)
-
搜索不工作
- 检查您的地理编码提供商设置
- 如果使用 OpenStreetMap,确保您已设置电子邮件地址
- 如果使用 Google,验证您的 API 密钥
-
中国地图位置偏移
- 确保您选择了"高德地图"作为地图源
- 插件会自动应用坐标转换
- 如果仍有问题,请检查您使用的是否是 WGS84 坐标
-
嵌入地图不更新
- 尝试刷新笔记视图
- 检查嵌入的查询是否正确
- 确保匹配的笔记实际包含地理位置
如果地图视图运行缓慢:
- 减少标记数量:使用查询过滤器限制显示的标记
- 禁用预加载:在设置中关闭"预加载标记和路径"
- 优化显示规则:减少复杂的显示规则数量
- 清理离线瓦片:定期清理不需要的离线瓦片
地图视图提供以下可自定义的键盘快捷键:
- 打开地图视图:打开主地图视图
- 添加内联地理位置链接:在当前光标位置添加内联地理位置
- 添加地理位置(前置内容):向当前笔记添加前置内容地理位置
- 新地理位置笔记:创建带有地理位置的新笔记
- 嵌入地图视图:在当前笔记中嵌入地图
您可以在 Obsidian 设置的"热键"部分中自定义这些快捷键。
- ✅ 新增高德地图支持:内置高德地图作为默认地图源选项
- ✅ 智能坐标转换:自动检测高德地图并应用 WGS84 到 GCJ02 坐标转换
- ✅ 完全中文化:界面、菜单、设置、通知全部中文化
- ✅ 保持兼容性:代码块语言标识符保持为
mapview,确保向后兼容
- 添加了对 Obsidian 属性编辑器的更好支持
- 改进的 GeoJSON 处理
- 更好的移动设备支持
- 性能优化
- v5.x:添加了 Svelte 重写和许多 UI 改进
- v4.x:添加了显示规则系统
- v3.x:添加了嵌入地图功能
- v2.x:添加了路径支持
- v1.x:初始发布
本插件基于 esm7/obsidian-map-view 开发,感谢原作者的出色工作。
针对中国用户的优化包括:
- 高德地图集成
- WGS84 到 GCJ02 坐标转换算法
- 完整的中文界面本地化
- 专门针对中国地图服务的优化
特别感谢:
- Leaflet - 地图引擎
- Font Awesome - 图标库
- Svelte - UI 框架
- 高德地图 - 提供中国地区优质地图服务
MIT 许可证
如果您遇到问题或有功能请求,请在 GitHub 上提交 issue。
对于中国用户特有的问题(如坐标转换、高德地图相关),请在 issue 中详细说明您的使用场景。
注意:使用高德地图时请遵守相关服务条款。坐标转换功能旨在提供更好的中国地图体验,但请确保您有权在您的用例中使用相应的地图服务。

















