Obsidian 插件:Map View
插件名片
概述
一个可交互的地图视图来记录您的笔记。
原文出处
下面自述文件的来源于 Readme
Readme(翻译)
下面是 obsidian-map-view 插件的自述翻译
Obsidian.md 地图视图
- Obsidian.md 地图视图
介绍
该插件为 Obsidian.md 引入了一个交互式地图视图。它会在您的笔记中搜索编码的地理位置(见下文),将它们放置在地图上并提供许多与之交互的工具。
它有效地将您的 Obsidian 存储库转变为一个个人 GIS 系统,为您的笔记、日记、旅行计划以及您使用 Obsidian 进行的几乎所有事情添加了一个地理层。
您可以根据自定义规则为不同的笔记类型设置不同的图标,从各种来源(Google Maps 和其他许多来源)保存地理位置,保存自定义视图,嵌入地图到笔记中,切换地图图层,运行强大的查询等等。
我编写这个插件是因为我希望我的不断增长的 Zettelkasten 能够回答以下问题…
- 当我得到关于有趣地方的推荐时,我如何以一种可以在以后回忆起来的方式保存它们?
- 当我访问某个地方时,我知道该地区有哪些有趣的地方?
- 当我为计划旅行进行研究时,我如何在地图上布置吃饭、徒步或睡觉的地方的选择,并将它们与先前的知识结合起来,保存它们以供将来参考?
地图视图可以与您的笔记流程集成,以回答所有这些问题以及更多。
就像 Obsidian 的图形视图可以让您可视化一些笔记之间的关联关系一样,地图视图可以让您可视化地理关系。
使用 Obsidian 移动版
目前该插件的主要限制是 Obsidian 移动应用程序没有位置权限,因此在移动设备上无法原生地查看当前位置。
为了克服这个问题,Map View 引入了一个配套的 Geo Helper应用程序。
支持开发
如果您想支持此插件的开发,请考虑 给我买杯咖啡。
快速使用指南
地图视图是一个功能强大的工具,有许多使用方式。
如果你想彻底学习它,你可能想从 了解它的工作原理 开始。
但是如果你想立即尝试一下,或者快速了解它的功能,继续阅读。
记录地理位置
以下是几个示例,用于记录您想在地图上查看的收藏位置。
选项 1:从笔记开始
从一个笔记开始,例如您的日常笔记,一个参考旅行计划的笔记或其他任何地方,启动 Obsidian 命令面板,选择“地图视图:添加内联地理位置链接”。
一个格式为 [](geo:)
的链接将被添加到光标所在位置。
在方括号内开始输入位置名称,会弹出一些地理位置结果。选择一个,您的 内联位置 就完成了。
选项 2:从地图开始
打开地图视图(例如从 Obsidian 标题栏图标)。
使用搜索工具搜索或定位一个位置。
右键单击地图,选择“在此处创建新笔记(前置元数据)”以创建一个记录选择点的笔记,或选择“复制地理位置”以复制一个内联位置以粘贴到其他笔记中。
在地图视图中还有许多其他记录地理位置的方法,请参阅 此处 了解更多详细信息。
创建旅行计划地图
您可以使用许多流程来创建自定义地图,与其进行交互并用于研究和规划 - 这是我通常用于旅行计划的一个流程。
步骤 1:记录一些位置。
对于大多数旅行,我喜欢使用一个带有部分的单个笔记,例如:
参观
餐厅
我使用上述方法之一(通过使用“添加内联地理位置链接”进行搜索)或其他描述的众多方法之一来添加地点。
请注意 内联标签,这些标签可用于自定义过滤器和/或为不同类型的地点创建不同的图标。
步骤 2:将它们标记在地图上!
对于单个笔记,只需点击笔记的菜单(3 个点)并选择“在地图视图中聚焦(笔记名称)”。
您应该立即看到所有位置的地图,如果您花一些时间配置 标记图标,您可以轻松获得不同形状和颜色的各种标签。
步骤 3:保存此地图
您有几个选项。
您可以打开地图上的预设部分并保存当前视图,然后随时从地图视图中打开它。
另一个选项是保存嵌入:在预设中点击“复制块”(或从笔记菜单中点击“复制地图视图代码块”),然后将生成的代码粘贴到一个笔记中。
还有许多其他构建旅行计划、展示和使用它的选项。
这篇 帖子提供了一个更详细的示例,深入了解地图视图的工作原理将帮助您找到自己的最佳流程。
构建个人地理信息系统(GIS)
使用地图视图的最强大方式是从您的笔记库中构建一个完整的个人地理信息系统(GIS)。
我个人是这样做的。
1. 收集
这部分与地图视图无关,但主要思想是我从各种来源 收集 信息片段,这些信息片段通常包含一些地理信息。
例如,我可以保存一个推荐新餐厅的 Facebook 帖子,剪辑一个徒步旅行小组的有趣徒步路线,或者在朋友告诉我一个我想记住的地方时起草一个快速笔记。
稍后我会将它们转化为笔记,但如果您不是这样做的,您可以跳过处理步骤。
2. 处理
当我将剪辑的信息片段转化为笔记时,我按照以下方式添加地理位置。
- 对于主要是地理信息的信息片段,例如餐厅推荐、徒步旅行或我可能想要访问的地方,我创建一个 Zettelkasten 笔记,然后使用地图视图的“将地理位置(前置信息)添加到当前笔记”来标记相关的地理位置。
- 如果使用文本搜索很难找到位置,我通常会打开一个更具体的地图工具,例如徒步旅行地图,找到我想要的地方,将其以纬度、经度格式复制并粘贴到上面的搜索框中。
- 或者,我有时更喜欢在地图上找到它,然后右键单击并选择“将地理位置作为前置信息复制”(或者一开始就在地图上创建笔记)。
- 然后,我会给完整的笔记添加一些有用的元数据。例如:
#徒步旅行
,#季节/春天
,#狗
,#露营
,#食物
,#食物/比萨
,#活动
,#活动/儿童
,#不推荐
(用于负面推荐)。
- 对于大量的地理信息,例如一个城市中推荐的咖啡店列表,我创建一个笔记,并通过内联地理位置链接添加所有地理位置。我将“添加内联地理位置链接”命令映射到
Alt+L
,这样我在输入笔记时可以轻松开始位置搜索。
3. 查询
我经常查询我的个人 GIS,有无数的场合。
- 当计划旅行时,我经常查看我要访问的区域,有时将其保存为预设而不应用任何过滤器,并对我对该区域的了解有一个总体的理解。
- 我经常查询系统以满足特定的需求。例如,我痴迷于收集我所在地周围的适合带狗的活动的信息,所以当我想去露营时,我会查询
#狗 AND #睡眠
(搜索适合带狗的露营地点),选择用餐选项时,我会查询#狗 AND #食物
。请参阅 此处 以了解有关查询的更多信息以及您可以使用它们做什么。 - 当访问一个未知的区域时,我经常从 Obsidian Mobile 启动地图视图,以便根据计划的变化或找到无需提前计划的事物。
另请参阅 此处 关于使用地图视图规划假期的 Reddit 帖子。
理解地图视图:解析位置数据
地图视图提供了 几种方法来在笔记中记录位置,并可以为您管理技术细节。
如果您只想开始使用,请跳转到该部分,或者继续阅读下面更详细的解释。
需要澄清的是,您可以在不手动输入地理位置的情况下使用地图视图。
但是,您需要理解前置元数据和内联格式之间的区别,并决定何时使用哪种格式。
因此,该插件通过扫描您的笔记并解析两种类型的位置数据来工作。
首先是笔记的 前置元数据 中的位置标签:
---
location: [40.6892494, -74.0466891]
---
这对于表示单个特定位置的笔记非常有用。
它还与其他有用的插件(如 obsidian-leaflet)读取位置的方式兼容,并允许一些互操作性。
插件解析位置数据的另一种方式是通过内联位置 URL,格式为 [链接名称](geo:40.68,-74.04)
,它允许在同一笔记中使用多个标记。
为了避免需要扫描所有笔记的完整内容,它在笔记的前置元数据中需要一个空的 locations:
标签(不是 ‘location’)。
(在大多数输入地理位置的方法中,地图视图会自动完成此操作。)
示例:
---
locations:
---
# 旅行计划
点1:[哈德逊河](geo:42.277578,-76.1598107)
...更多的笔记内容...
点2:[纽黑文](geo:41.2982672,-72.9991356)
带有多个标记的笔记将在地图上显示多个具有相同笔记名称的标记,单击标记将跳转到笔记中的正确位置。
对于许多情况来说,内联位置更好,因为 geo:
是一种 本地URL方案,所以如果在 Obsidian 中点击它(包括移动设备),将会触发默认的地图应用程序(或位置的应用程序选择器)。
然而,目前来说,前置元数据的方法更好,如果您想要与使用它的插件进行互操作性,如果您想要在位置上存储大量可过滤的元数据,或者如果您通过链接大量表达自己。
内联位置还支持以 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 的任何地方
地图视图添加了一个名为“新地理位置笔记”的 Obsidian 命令,您可以将其映射到热键并在 Obsidian 的任何地方使用。
这将打开一个对话框,在该对话框中,您可以搜索(根据您 配置的地理编码提供商 的地址或位置)或使用内置或自定义的 URL解析规则 粘贴 URL。
在现有笔记中
有多种方法可以向现有笔记添加地理位置。
- 创建一个内联地理位置链接,格式为
[](geo:)
,如果你在链接名称(括号内)中开始输入,地图视图将启动位置搜索。如果你确认其中一个选项,它将填入该位置的坐标。在下面的 “笔记内位置搜索” 部分中可以了解更多信息。
为了使这个过程更加流畅,地图视图在 Obsidian 中添加了一个名为“添加内联地理位置链接”的命令,你可以将其映射到一个键盘快捷键上。
- 使用 Obsidian 命令“向当前笔记添加地理位置(前置元数据)”添加前置元数据地理位置。这将打开与“新地理位置笔记”相同的对话框,允许你搜索位置名称或粘贴 URL解析规则。
- 如果你在其他地图服务中有一个地理位置需要记录,例如来自 Google Maps 的地理位置,你可以复制该服务中的 URL 或“lat,lng”地理位置,然后在你的笔记中右键单击并选择“粘贴为地理位置”。支持的服务是可配置的,更多详细信息请参见 下面。
从地图中
地图提供了几种工具来创建笔记。
- 在地图上右键单击时使用“在此处新建笔记”。这将创建一个新的笔记(基于您可以在设置中更改的模板),并带有您点击的位置。您可以创建一个带有正文(单个地理位置)的空白笔记,或者一个带有内联地理位置的空白笔记。
可以使用右上角的工具搜索地图,以便快速跳转到您想要标记的地方。
URL解析规则 在这里也适用,因此您可以 从Google地图(或任何其他服务)复制地理位置并跳转到它。
- 如果您更喜欢以文本形式输入地理位置,请在右键单击地图时使用“复制地理位置”选项,并将它们粘贴到笔记中。
粘贴为地理位置
地图视图监视系统剪贴板,当检测到剪贴板中包含编码的地理位置(例如 Google 地图的“纬度,经度”位置)时,会在编辑器上下文菜单中添加一个“粘贴为地理位置”的选项。
例如,如果您在 Google 地图中右键单击一个位置并点击菜单中的第一项(以纬度,经度格式显示,参见 下文),然后您可以将其粘贴为一个地理位置到一个笔记中。
另外,您还可以右键单击一个 URL 或者已经存在于笔记中的支持的格式化字符串,并选择“转换为地理位置”。
默认情况下,地图视图可以解析来自两个服务的 URL:OpenStreetMap 的“显示地址”链接和许多 URL 使用的通用的“纬度,经度”编码。
提示:从谷歌地图复制
在桌面网页上的谷歌地图上,提供了一个非常简单的快捷方式来复制通用的 纬度,经度
坐标。
- 在谷歌地图上的任何位置右键单击。
- 第一个菜单项应该是通用坐标。点击它,坐标将被复制到剪贴板。
- 在任何 Obsidian 笔记中,右键单击并选择“粘贴为地理位置”,或将坐标粘贴到任何地图视图搜索框中。
在笔记中嵌入地图
地图视图支持 Obsidian 代码块格式,可以在笔记中嵌入地图。有几种方法可以实现这一点:
- **嵌入现有地图。**要嵌入地图视图中的现有地图,包括其查询和任何其他设置,请从地图的预设下拉菜单中点击“复制块”,然后将该块粘贴到笔记中。
- **直接从笔记中嵌入。**从编辑器中,右键单击并选择“嵌入地图视图”选项,然后输入一个用于地图中心的搜索词。或者,可以将名为“Map View: add an embedded map”的 Obsidian 命令分配给键盘快捷键。
一旦地图嵌入到笔记中,它将表示一个实时视图,根据您的笔记进行更新。
在查看区域中添加或修改的地理位置,并且与嵌入中保存的查询匹配,将实时更新。
您可以在嵌入中进行轻微的视图调整(更改缩放、平移或高度),如果您希望保存这些调整,请点击出现的“保存”按钮。
要进行更大的调整,例如更新查询或完全更改视图,请使用“打开”按钮进行更改,然后在嵌入的视图菜单中点击“从打开的地图视图更新”。请注意,如果您同时打开了多个完整的地图视图实例,“从打开的地图视图更新”可能不会按照您的意图执行操作,您可能需要先关闭不需要的视图。
嵌入还可以在 Canvas 中非常好地工作,包括实时更新。
高级附加选项
- 嵌入地图中的查询字段支持模板参数
$filename$
。例如,如果您希望在笔记模板中嵌入地图,可以编辑代码块的query
字段为"query":"linkedfrom:\"$filename$\" OR linkedto:\"$filename$\""
,这样地图将始终引用主机笔记。
已知问题: $filename$
的替换是在处理代码块时进行的,并作为最终结果发送到地图视图。因此,如果您通过缩放、平移和点击保存来交互式地编辑嵌入内容,query
字段将被实际文件名覆盖,而不是模板。
- 嵌入地图代码块中的 JSON 支持一个仍然相当原始的
autoFit
布尔标志。当设置为true
(即在代码块的 JSON 中添加"autoFit":true
)时,地图将加载给定的平移和缩放,但随后会执行自适应调整,并覆盖进一步的缩放和平移更改。如果保存的状态与自适应调整后的状态不同,这会导致缩放/平移动画(在这种情况下,点击保存以冻结新状态)。我最终希望通过一些更合理的行为将其完美地融入用户界面。
查询
地图视图支持强大的查询功能,与 Obsidian 的查询格式大致相似。
查询字符串可以包含以下搜索运算符:
tag:#...
用于搜索具有特定标签的笔记或标记。- 这适用于整个笔记(
#hiking
)和特定标记的内联标签(tag:hiking
)。 - 您还可以使用通配符,就像 tag规则 中一样,例如
tag:#sleep*
将匹配#sleep
,也会匹配#sleep/camping
。
- 这适用于整个笔记(
name:...
用于搜索名称包含给定字符串的标记。- 对于前置元数据的地理位置,这将匹配文件名。
- 对于内联地理位置,这将匹配链接名称并忽略文件名(如果要始终匹配文件名,请使用
OR
和path:
)。
path:...
用于按笔记路径搜索。- 此运算符将包括与查询匹配的路径中的所有标记。
linkedto:...
包括包含特定链接的笔记。- 如果笔记具有与查询匹配的链接名称,则此运算符将包括该笔记(以及其中的所有标记)。
- 例如,如果您有一个名为
Cave Hikes
的笔记,并且您有与之链接的地理位置笔记(例如,将[[Cave Hikes]]
包含为链接),则可以通过过滤器linkedto:"Cave Hikes"
将它们包括在内。 - 任何解析为合法的 Obsidian 链接的内容都可以使用,例如笔记名称(‘Cave Hikes’)或路径都可以,但部分名称不行。
linkedfrom:...
包括从特定笔记链接到的笔记,以及原始笔记本身。- 如果笔记从查询中提到的笔记链接到该笔记,则此运算符将包括该笔记(以及其中的所有标记)。
- 例如,如果您有一个名为
Trip to Italy
的笔记,其中链接到各种地理位置笔记(例如您想要访问的地方或旅行日志),则查询linkedfrom:"Trip to Italy"
将仅过滤这些标记。 - 任何解析为合法的 Obsidian 链接的内容都可以使用,例如笔记名称(‘Cave Hikes’)或路径都可以,但部分名称不行。
lines:x-y
仅包括在其笔记中给定行范围内定义的内联标记。- 例如,
lines:20-30
仅包括在包含它们的文件的第 20 到 30 行之间定义的内联地理位置。
- 例如,
所有运算符都不区分大小写。
您可以将上述内容与逻辑运算符 AND
、OR
、NOT
结合使用,并使用括号进行分组。
这与 Obsidian 自己的查询语言不同,Obsidian 使用 -
而不是 NOT
,并将空格视为 ‘AND’。
例如:
linkedfrom:"Trip to Italy" AND tag:#wine
可以包括您从意大利旅行中链接的地点,或者在该笔记本身中,并且标记为#wine
。tag:#hike AND tag:#dogs
可以包括您标记为适合狗的徒步旅行。tag:#hike AND (tag:#dogs OR tag:#amazing) AND NOT path:"bad places"
有许多创造性的方法可以利用这些查询功能来组织带有地理位置的笔记。
您可以使用标签表示位置类型(例如 #hike
或 #restaurant
),或使用标签表示地点的特征(#hike/summer
,#hike/easy
)。
您可以使用 Zettelkasten 的反向链接来为索引使用路径(例如,从您想要标记为此类的笔记中链接到 “Hikes that I Want”),然后使用 linkedto:
来查找链接到它的地点。
或者,您可以有计划一次旅行的笔记,并从中链接到地点,然后使用 linkedfrom:
来关注您的计划。
在所有情况下,您可以 保存预设,其中包括过滤器或其子过滤器。
标记图标
地图视图允许您根据强大的规则系统自定义笔记的地图标记图标。
这些规则可以使用插件的设置窗格进行编辑,也可以作为 JSON 进行编辑,以获得更精细的控制。
图标基于 Font Awesome,因此要添加一个标记图标,您需要在 Font Awesome 目录中找到其名称。
此外,还有一些基于 Leaflet.ExtraMarkers 的标记属性(形状、颜色等)。
要更改笔记的地图标记图标,请转到地图视图设置,并滚动到标记图标规则。
一个单独的标记由“标签模式”和“图标详细信息”定义。
标签模式通常是一个标签名称(例如 #dogs
),但也可以使用通配符(例如 #trips/*
)。
图标详细信息包括几个属性:图标名称(从 Font Awesome 目录中获取)、颜色和形状。
一个单独的标记在以下 JSON 结构中定义:
{"prefix": "fas", "icon": "fa-bus", "shape": "circle", "color": "red"}
要添加一个带有公交车图标的标记,请点击“新建图标规则”,在上面的链接中搜索 Font Awesome 中的“bus”,选择 此图标,然后查看其名称为 fa-bus
。
一旦您在图标名称中输入 fa-bus
,您应该立即在预览中看到您的图标。
要使此图标适用于带有 #travel
标签的笔记,请在“标签名称”框中输入 #travel
。
标签规则
为了将图标应用于带有地理位置数据的笔记,地图视图会按照它们的顺序扫描完整的规则列表,始终从 default
开始。
如果规则列出的标签包含在笔记中,则匹配该规则,然后该规则的字段将覆盖之前匹配规则的相应字段,直到扫描完所有规则。
这使您可以设置仅更改图标的某些属性的规则,例如,某些规则根据某些标签更改形状,某些规则更改颜色等。
这是我在插件中提供的一个可能不太有用的默认示例:
{ruleName: "default", preset: true, iconDetails: {"prefix": "fas", "icon": "fa-circle", "markerColor": "blue"}},
{ruleName: "#trip", preset: false, iconDetails: {"prefix": "fas", "icon": "fa-hiking", "markerColor": "green"}},
{ruleName: "#trip-water", preset: false, iconDetails: {"prefix": "fas", "markerColor": "blue"}},
{ruleName: "#dogs", preset: false, iconDetails: {"prefix": "fas", "icon": "fa-paw"}},
这意味着默认情况下,所有笔记都将具有蓝色的 fa-circle
图标。
然而,带有 #trip
标签的笔记将具有绿色的 fa-hiking
图标。
然后,同时具有 #trip
和 #trip-water
标签的笔记将具有 fa-hiking
标记(应用 #trip
规则时),但是具有蓝色标记,因为 #trip-water
覆盖了之前 #trip
规则设置的 markerColor
。
标签规则还支持通配符,例如形式为 "#food*"
的规则将匹配具有标签 #food
,#food/pizza
,#food/vegan
,#food-to-try
等的笔记。
设置还允许高级用户手动编辑配置树,在那里您可以使用基于 Leaflet.ExtraMarkers 属性的更多属性。手动编辑会实时更新 GUI 界面。
在笔记中搜索和自动完成位置
地图视图添加了一个名为“添加内联地理位置链接”的 Obsidian 命令,您可以(并且鼓励您)将其映射到一个键盘快捷键,例如 Ctrl+L
或 Ctrl+Shift+L
。
该命令插入一个空的内联位置模板:[](geo:)
。
当以这种格式编辑内联位置时,无论是手动添加还是使用命令添加,如果您开始输入链接名称,地图视图将根据地理编码服务开始提供位置建议。
选择其中一个建议将填入所选位置的坐标,并且 不会 更改您的链接名称(假设您更喜欢自己的名称而不是地理编码服务提供的正式名称)。
如果您的笔记尚未标记为包含位置(通过前置元数据中的 locations:
标签),则会自动添加该标记。
更改地理编码提供程序
默认情况下,地图视图配置为使用 OpenStreetMap 作为搜索提供程序。
如果您希望使用 Google 地图搜索,可以在插件设置中进行配置。
对于正常的笔记使用,Google 地理编码 API 几乎是免费的或者非常便宜,但您需要设置一个项目并从 Google 获取 API 密钥。
有关更多详细信息,请参阅 此处。
如果您愿意,您可以将稍微昂贵一些的 Places API 添加到您的 API 密钥中,然后在地图视图设置中打开“使用 Google Places 进行搜索”。
对于大多数合理的笔记使用,您不太可能超出 Places API 的免费配额。
**注意:**使用任何地理编码提供程序都存在风险,您有责任验证自己是否违反了服务的使用条款。
地图来源
默认情况下,地图视图使用 CartoDB Voyager Map,每月免费使用量为 75K 次请求。
但是,您可以在配置中更改或添加地图来源,使用标准 URL 语法使用具有瓦片 API 的任何服务。
有许多本地化、专业化或仅仅是精美渲染的地图服务可供使用,有时需要进行免费注册。
在 这里 可以看到一个相当全面的列表。
对于使用 API 密钥的提供商(例如 MapTiler 或 Mapbox),请查阅提供商文档以了解如何将密钥添加到 API URL 中。
例如,在 MapTiler 中,URL 将是 https://api.maptiler.com/maps/outdoor/{z}/{x}/{y}.png?key=ABCDEFGH
。
尽管这通常适用于此插件,但值得明确指出的是,正确使用第三方地图数据,并确保不违反任何使用条款,是您自己的责任。
请注意,Google Maps 不在该列表中,因为虽然它提供了相同的标准静态瓦片形式和相同的 URL 格式,但 Google Maps 的服务条款使得在应用程序中合法捆绑地图变得困难。
如果您有多个地图来源,可以从视图窗格中切换它们。
此外,您可以为每个地图来源设置一个可选的不同的暗主题 URL。
如果检测到暗主题,或者您特别将地图来源类型更改为 Dark(使用视图窗格中的下拉菜单),则会获取配置的 Dark URL。
预设
如果您想保存并轻松返回到某个地图状态,您可以将其保存为预设。
要这样做,请在主插件控件中打开预设窗格,然后单击“另存为”以使用一个易于返回的名称保存当前视图。
如果输入一个已存在的名称,该预设将被覆盖。
保存的预设包括地图状态(缩放和平移)、使用的过滤器,以及如果在“另存为”对话框中勾选了复选框,则还包括选择的地图源。
如果不将地图源包括在预设中,切换到新保存的预设将使用当前选择的地图源。
预设 不会 存储地图的主题(明亮/黑暗)。
默认预设是特殊的;您可以使用“另存为默认”按钮保存它,并通过单击重置按钮、从框中选择默认预设,或打开一个没有先前保存状态的新地图视图来返回到它。
打开
地图视图的许多上下文菜单显示一个可自定义的“打开”列表,可以在外部源中打开给定位置。
这些源可以是 Google 地图、OpenStreetMap、专门的地图工具或几乎任何您用于查看位置的工具。
“打开”列表显示在以下情况下:
- 在地图上右键单击时。
- 在地图上右键单击标记时。
- 在具有位置的笔记中右键单击行时。
- 在具有正文位置的笔记的上下文菜单中。
可以通过插件的设置菜单编辑此列表,设置一个在上下文菜单中显示的名称和一个 URL 模式。URL 模式有两个参数 —{x}
和 {y}
— 它们将被点击位置的纬度和经度替换。
常见的选择可能包括:
- Google 地图:
https://maps.google.com/?q={x},{y}
- OpenStreetMap:
https://www.openstreetmap.org/#map=16/{x}/{y}
(将16
替换为您首选的缩放级别) - Waze(在线放置的标记):
https://ul.waze.com/ul?ll={x}%2C{y}&navigate=yes&zoom=17
(将17
替换为您首选的缩放级别)
您可以通过检查 URL 来找出许多其他地图服务。
URL 解析规则
如上所述,地图视图在多个地方使用 URL 解析规则,以提供从外部来源解析 URL(或其他字符串)并将其转换为标准地理位置的能力。
- 当右键单击具有已识别链接的行时,编辑器上下文菜单中将显示“转换为地理位置”条目。
- 当系统剪贴板中检测到已识别链接时,编辑器上下文菜单中将添加“粘贴为地理位置”条目。
- 在“新地理位置注释”对话框和地图搜索中,粘贴支持的 URL 将解析地理位置。
URL 解析规则可以在插件的配置窗格中进行配置,并需要熟悉正则表达式。
语法期望两个捕获组,并且您可以配置它们是否解析为 lat, lng
(最常见)或 lng, lat
。
如果您认为您添加的正则表达式足够稳定,请使用 PR 将其添加到插件中,以便其他人也能受益!
查看 URL
您可以将当前地图状态保存为 URL,以便从其他应用程序或 Obsidian 内部打开。
从视图的“更多选项”上下文菜单中单击“复制地图视图 URL”,或从地图预设控件中单击“复制 URL”。
您可以将生成的 obsidian://
URL 粘贴到计算机或手机上的任何本地应用程序中,它将在相同的视图中启动 Obsidian 与地图视图。
或者,您可以将此链接粘贴到一个笔记中,并通过将其设置为 Markdown 链接使其可点击:[链接名称](url...)
。
这对于转到与笔记相关的特定视图(包括查询、地图源、缩放、平移等)非常有用,例如旅行计划。
地图视图有一个模式,根据当前活动的文件重新聚焦地图,因此,如果您在自己的窗格中打开地图视图,它可以跟随您当前关注的任何文件。
这与“地图跟随搜索结果”的设置密切相关,并且在该设置开启时可能最直观地工作。
如何“跟随”活动笔记的具体行为可以通过配置中的“跟随活动笔记的查询格式”设置进行配置。
默认情况下,地图视图使用查询 path:"$PATH$"
,这意味着当您切换到一个笔记时,视图会自动更新查询,仅显示该笔记路径内的标记。您可以编辑此设置以实现更精细的行为,例如:
- 使用
linkedfrom:"$PATH$"
以更详细地包含来自您所在文件和它链接到的文件的标记。 - 使用
linkedfrom:"$PATH$" OR linkedto:"$PATH$"
来包括活动笔记链接到的标记以及链接到该文件的标记。
GPS 位置支持
这仍处于早期测试版。
地图视图在 Obsidian 内部工作,因此受到 Obsidian 强制执行的一些限制的限制。
其中之一是 Obsidian 应用程序(桌面和移动)不启用位置权限,并且因此在 Obsidian 中运行的插件无法访问设备位置。
这已经在过去与 Obsidian 开发人员讨论过,但作为一个笔记应用程序,他们更喜欢暂时保持不可用。
作为一种解决方法,地图视图支持一个外部的地理助手应用程序,该应用程序具有单独的权限,并且可以从应用程序外部向地图视图报告当前位置。
目前处于早期测试版,体验可能不理想。
然而,在许多情况下,它满足了向地图视图添加适当的 GPS 支持的基本需求。
目前有两个变体的 Geo Helper 应用程序:一个是 Web 应用程序,一个是 Android 应用程序。
访问Geo Helper存储库以获取安装和使用说明(Web 应用程序不需要安装,但仍然应阅读说明)。
无论哪种方式,Geo Helper 完全在本地运行,您的位置不会发送到任何服务器。请随意检查代码(欢迎改进)。
要使用 Geo Helper,请首先在地图视图设置中打开“GPS”。
然后,选择 Geo Helper 类型:外部 URL(默认),已安装的应用程序或命令行。
“命令行”的用途是用于更高级的用法,您可以将 Web 应用程序保存在本地,或者如果您希望使用非默认浏览器启动它。
这添加了以下功能:
- 在地图视图地图上添加了一个 GPS 位置图标(在搜索控件下方)。单击后,它尝试通过 Geo Helper 获取您的位置,并在地图上显示成功的位置。
- 可以从笔记中映射和启动的多个命令:
- GPS:复制内联位置
- GPS:新地理位置笔记
- GPS:查找位置并聚焦
- GPS:在当前位置添加地理位置(内联)
- GPS:将地理位置(前置信息)添加到当前笔记。
在找到您的位置后,许多这些命令也可以直接从地理助手中启动。
**需要帮助:**地理助手移动应用程序目前仅适用于 Android。如果您是 iOS 开发人员,并希望构建和维护相应的应用程序,请联系我们。
与 Obsidian Leaflet 的关系
希望在 Obsidian 中添加地图功能的用户可能还想看看伟大的 Obsidian Leaflet插件。
虽然这两个插件都是关于地图,并使用 Leaflet.js 作为它们的可视引擎,但它们代表了不同的方法。
相似之处
- 这两个插件都支持使用您的笔记或笔记文件夹创建地图,并提供广泛的自定义选项。
- 两者都支持根据特定用途(例如旅行计划)从一组关注的笔记创建地图,在笔记中嵌入地图等。
不同之处
- 地图视图起初是一个视图(类似于 Obsidian 的图形视图),而不是一个嵌入的语法。虽然现在它支持在笔记中嵌入地图,但与它的主要交互是通过 GUI 而不是代码块。相比之下,Leaflet 主要通过代码块提供自定义。
- 地图视图从笔记的前置元数据和笔记内的内联语法中解析地理位置(允许在一个笔记中有多个地理位置,也可以有不同的个别标签),而 Leaflet 专注于每个笔记一个地理位置的方法(其他位置可以添加到地图代码本身)。
- 地图视图是一个基于您的笔记的研究工具:它提供了通过 UI 进行交互式查询的功能,例如为了从中获取见解或在计划旅行或到达某个位置时进行咨询。相比之下,Leaflet 似乎更注重呈现最细粒度可自定义的地图。
- 地图视图具有强大的地理位置搜索工具,可以快速从笔记内部或地图中添加位置。
- 地图视图根据可自定义的规则构建标记图标,因此您可以执行诸如“将所有#food/* 项目标记为红色”之类的操作,另外“给#food/pizza 一个比萨图标”,所有标记为比萨的地点都将有一个红色的比萨图标。在 Leaflet 中,每个标记都可以单独指定标记图标,或者使用全局设置为标签分配完整的图标。
- Leaflet 支持将 GPX 文件、覆盖物和 GeoJSON 形状添加到地图中。
- 鉴于其独立的地图性质,Leaflet 可能更适合 TTRPG 地图。(地图视图也可以实现这一点,但我认为它不太自然。)
更新日志
4.0.0
- GPS 支持(在某种程度上!)
- 地图视图现在支持一个伴侣应用程序,可以帮助接收精确位置并在地图或笔记中使用。
- 这是实验性的,不会立即对每个人都起作用。
- 更多详情请参见 这里。
- 路线规划:现在在地图上右键单击时,您可以选择“标记为路线规划源”,一旦标记了这样的源,您就可以启动外部工具来获取各个目的地的驾车路线或预计到达时间(默认为 Google Maps)。这对于评估旅行计划中的距离或旅行时间非常有用。
- 嵌入地图现在有一个“锁定”控件,可以禁止意外更改地图(https://github.com/esm7/obsidian-map-view/issues/178)。
- 添加了一个尚未完全成熟的
autoFit
标志,尚无适当的用户界面(https://github.com/esm7/obsidian-map-view/issues/171)。有关详细信息,请参见 这里。 - 在嵌入的地图代码块中添加了一个
$filename$
模板参数(https://github.com/esm7/obsidian-map-view/issues/146)。 linkedto:
查询运算符现在实际解析 Obsidian 链接,而不是进行文本比较(https://github.com/esm7/obsidian-map-view/issues/162)。- 注意:这可能会破坏依赖于文本比较而不是实际笔记路径的现有查询。
- 修复了预设的各种重大问题(https://github.com/esm7/obsidian-map-view/issues/175)。
- 修复了打开笔记时空白或格式错误的内联地理位置引发异常的问题(https://github.com/esm7/obsidian-map-view/issues/172)。
- 修复了 Map View 尝试处理存储库中的非 Markdown 文件的问题(https://github.com/esm7/obsidian-map-view/issues/181)。
- “在最后使用的窗格中打开”设置现在尊重固定窗格(https://github.com/esm7/obsidian-map-view/issues/134)。
3.1.1
- 笔记中的地理链接以及前置地理位置现在是内部地图视图链接!(https://github.com/esm7/obsidian-map-view/issues/144)
- 这意味着默认情况下,当您在地图视图中点击地理链接时,它将在地图视图内打开。
- 这可以在设置中关闭。
- 现在,笔记中的地理链接可以选择显示地图预览悬停(如果上述功能已打开)。
- 目前默认关闭,但在我对其性能和稳定性有信心时,可能会默认打开。
- 对于 ” 标记内联位置 ” 的通配符支持(https://github.com/esm7/obsidian-map-view/issues/164)。
- 修复了暗模式下背景颜色错误的问题(https://github.com/esm7/obsidian-map-view/issues/163)。
3.0.2
许多小的改进和修复:
- 新的功能区图标,基于 Lucide,以与 Obsidian 设计指南保持一致(感谢@huy-vuong!)
- 添加了一个设置,始终在地图视图弹出窗口中显示链接名称(并将相关设置组织到自己的部分中)。 (https://github.com/esm7/obsidian-map-view/issues/149)
- 添加了对标签查询中通配符的支持(https://github.com/esm7/obsidian-map-view/issues/159)。
- 修复了在“跟随活动笔记的查询格式”中设置的查询中包含多个
$PATH$
项的错误(https://github.com/esm7/obsidian-map-view/issues/158)。 - 添加了使用自定义标签而不是空的
locations:
YAML 标签的功能(https://github.com/esm7/obsidian-map-view/issues/135)。 linkedfrom
查询过滤器现在需要完全匹配(https://github.com/esm7/obsidian-map-view/issues/152)。- 修复了嵌入地图上只更改缩放时“保存”按钮不弹出的错误(https://github.com/esm7/obsidian-map-view/issues/156)。
3.0.1
修复:
- 现在查询中的和字符
&
可以正常工作。 - 通过非地图方式添加的嵌入现在以最小缩放值 7 打开,这样如果这是用户的默认视图,它们就不会显示整个世界。
3.0.0
新功能:
- 地图嵌入终于来了!
- 地图视图现在支持在笔记中嵌入地图。
- 这在 Canvas 中也非常好用!
- 更多详情请参见 这里。
- 大幅提升性能,特别是在显示数百个或更多标记时。现在,即使有数千个标记和数十个图标规则,地图视图也能立即打开和交互。
- **重要提示:**这可能会破坏一些非常自定义的标记图标规则(特别是那些使用我没有考虑测试的属性的规则)。
- 如果遇到此类问题,请提交一个问题并在此期间使用版本 2.2.0。
- 对“地图标记点击的默认操作”设置进行了重大改进。现在可以进行细粒度的设置,以微调点击、Ctrl+ 点击和中键点击标记时发生的操作(以及从地图打开笔记的其他操作),同时还支持选项卡和面板。
- 类似于上述内容,为所有打开地图视图的操作添加了新的设置,因此可以为点击、Ctrl+ 点击和中键点击配置不同的行为。
- 当从剪贴板粘贴内联地理位置时,会自动添加一个“locations:”的前置元数据(除非在插件设置中关闭)。
修复:
- 修复了查询中括号无法工作的问题(https://github.com/esm7/obsidian-map-view/issues/124)。
- 修复了查询中逗号无法工作的问题(https://github.com/esm7/obsidian-map-view/issues/125)。
- 修复了由于 Obsidian 1.1 界面更改导致的“在地图视图中打开”和“在地图视图中显示”中奇怪的面板选择逻辑(https://github.com/esm7/obsidian-map-view/issues/127)。
- 修复了对于某些人的一些笔记中添加的令人讨厌的“$CURSOR”(https://github.com/esm7/obsidian-map-view/issues/21)。
- 修复了“跟随活动笔记”的问题(https://github.com/esm7/obsidian-map-view/issues/113)。
2.2.0
新功能:
- 在编辑器中选择具有多个地理位置的行范围将显示一个新的“在地图视图中聚焦 X 个地理位置”上下文菜单项。
- 新的
name
查询过滤器(用于过滤地理位置名称)和lines
过滤器(用于在文件中过滤行范围)。 - 小的用户界面改进,例如弹出窗口中的图标。
- “在地图视图中聚焦笔记”现在也适用于没有地理位置的笔记,因为“跟随活动笔记”查询格式可能会查看链接。
- 为正在开发的重大功能做了一些幕后工作…
修复:
- 为了适应 Obsidian 0.16.x,进行了各种修复和调整。
- 作为其中的一部分,“粘贴为地理位置”现在始终显示在编辑器上下文菜单中,无论剪贴板中是否找到可解析的字符串。这是由于 Obsidian 中菜单的工作方式发生了变化,不允许在填充菜单时检查剪贴板。
- 修复了由于某种原因
querystring
在移动设备上不可用导致的 Google Places 搜索无法工作的问题。 - 修复了移动设备上弹出窗口不一定可点击的问题。
- 修复了在包含其他链接的行上解析链接名称时出现的问题。
2.1.1
修复了 OpenStreetMap 地理定位搜索对某些用户不起作用的问题。
2.1.0
**重要更新:**此版本需要 Obsidian 0.15.3 或更高版本。
新增功能:
- 搜索结果或聚焦地理位置现在在地图上以蓝色光晕的形式进行突出显示。
- 可以通过 CSS 进行自定义。
- 当最小化时,使图形控件更加紧凑,并在更多情况下正确定位。
- “跟随活动笔记”现在可以使用可自定义的查询进行操作,详见 此处。
- 清除“跟随活动笔记”现在会重置查询。
- 搜索结果现在按照距离地图中心的距离进行排序显示。
- 在搜索结果中,按下 Shift+Enter 键将跳转到该标记,而不会进行缩放。这与上述引入的突出显示功能相辅相成,因此您可以轻松地突出显示各种标记,而不会改变地图视图。
- 当使用 Google Places 作为搜索提供程序时,地理搜索结果现在优先显示在显示区域中。
- 调整了各种菜单以适应 Obsidian 0.15.x 的部分。
- 将 Font Awesome 库升级到 6.1 版本,提供更多图标。
- 在移动设备上,一些地图交互操作经过定制,以便轻触(轻触标记显示其名称,长按打开菜单)。
修复问题:
- 修复了在存在多个地图视图实例的情况下控件的错误行为。
- 修复了某些主题下地图视图干扰图形视图控件的问题。
- 修复了行内标签后跟逗号时无法识别的问题。
- 对内部状态更新机制进行了各种修复,希望能够实现更平滑的缩放/平移操作,避免出现意外跳跃。
- 作为其中的一部分,状态转换时缩放/平移动画已恢复。
- 修复了 Obsidian 0.15.x 上的“跟随活动笔记”问题。
- 修复了如果文件中包含多个位于同一地理位置的标记时出现的重复 bug(https://github.com/esm7/obsidian-map-view/issues/85)。
2.0.5
- 在某些情况下,改进了保存“后退/前进”历史记录的逻辑,并优化了状态更新逻辑,使过渡更快。
- 在设置了“地图跟随搜索结果”时,进一步修复了“跟随活动笔记”(https://github.com/esm7/obsidian-map-view/issues/92)。
- 修复了包含
---
作为内容分隔符的笔记中“添加地理位置(frontmatter)”的问题(https://github.com/esm7/obsidian-map-view/issues/98)。感谢@MattWilcox! - 修复了在“新笔记路径”中使用反斜杠的路径无法工作的问题(https://github.com/esm7/obsidian-map-view/issues/97)。
- 修复了 Android 上新笔记地图操作无法工作的问题(https://github.com/esm7/obsidian-map-view/issues/96)。
- “显示在地图上”操作的默认缩放级别,如设置中所设定的,现在也用作“地图跟随搜索结果”的最大缩放级别。
- 笔记内标签建议不再包含井号(对于内联标签,井号不应该存在)。
2.0.4
- 修复了集群扩展不起作用的问题。
- 改进了不同设备之间的“复制 URL”处理。
- 在新的查询框中添加了一个清除按钮。
- 修复了由于意外升级到 Leaflet 1.8.0 导致的触摸移动和缩放停止工作的问题。
- 修复了快速一系列事件中不一致的移动和跳跃。
2.0.3
- 修复了在某些情况下搜索停止工作的问题,这些情况不是新的 Google Places(https://github.com/esm7/obsidian-map-view/issues/93)。
- 修复了“跟随活动笔记”功能(https://github.com/esm7/obsidian-map-view/issues/92)。
2.0.0
这是一个庞大的版本,带来了大量的更新,将地图视图的功能推向了一个新的水平!
- Map View 现在具有强大的 查询 机制,而不是以前的简单标签过滤。这对一些用户来说将是一个重大变化。
- 在视图控制下,打开“跟随活动笔记”以便地图视图聚焦于任何已打开或更改的笔记(https://github.com/esm7/obsidian-map-view/issues/71)。
- 现在可以选择是否显示笔记名称(https://github.com/esm7/obsidian-map-view/issues/75)。我希望这可以在预览的同一个弹出窗口中,但目前我不知道如何做到这一点。
- 修复了与前置标签支持的问题(https://github.com/esm7/obsidian-map-view/issues/72)(感谢 @gentlegiantJGC!)
- 添加了一个用于瓦片图层最大缩放的配置(感谢 @gentlegiantJGC!)。
- 这还包括了一个新的“超出最大缩放”的设置,它不会限制您到瓦片源的最高缩放级别。
- 地图搜索工具现在使用与“新地理位置笔记”相同的搜索窗口,除了配置的地理编码服务外,还可以进行 URL 解析。
- 它还包括现有的标记,因此您可以快速跳转到地图上的现有名称。
- 除了使用户界面更加统一外,这对于可用性非常重要,特别是在移动设备上。例如,您可以使用它从其他应用程序获取您的位置,并用它来创建笔记或探索周围。
- 添加了一个“搜索活动地图视图”的命令(在地图视图聚焦时可用),因此可以为地图搜索分配一个键盘快捷键。
- 内联标签的自动完成。如果在包含有效地理位置的行中键入
tag:
,您将获得标签名称的建议。 - 在地图视图的上下文菜单中,或在预设控制部分中,您可以将活动视图复制为链接。
- 从其他应用程序点击此链接应该会启动 Obsidian 并打开具有完全相同视图的地图视图(包括查询、缩放、平移和地图源)。
- 要在 Obsidian 笔记中使用此功能,请将 URL 粘贴到链接中,例如
[链接名称](obsidian://...)
- 所有地理位置搜索现在都支持 Google Places API,并且会优先使用 Places API 的结果,而不是简单的 Google Geolocation API。
- 这需要您的 Google API 密钥包含 Google Places 的凭据,请参阅上面的文档。
- 几个用户界面改进:
- 当不使用时,地图控制面板现在更漂亮、更小巧。
- 笔记名称和聚类弹出窗口现在遵循 Obsidian 主题。
反馈交流
其他渠道
版权声明
版权声明:所有 PKMer 文章如果需要转载,请附上原文出处链接。