Skip to content

geosmart/obsidian-chinese-map-view

 
 

Repository files navigation

Obsidian.md 中文地图视图

简介

这个插件为 Obsidian.md 引入了一个交互式地图视图。 它搜索您的笔记中各种格式编码的地理位置和路径(见下文),将它们放在地图上,并提供许多工具与之交互。

它有效地将您的 Obsidian 库转变为一个个人 GIS 系统,为您的笔记、日志、旅行规划以及您使用 Obsidian 的几乎任何用途添加地理层。

您可以...

  • 使用内置搜索添加位置(可选择利用 Google Places)。
  • 从各种来源保存地理位置。
  • 查看 GeoJSON、GPX、KML 和 TCX 格式的路径。
  • 在地图上绘制位置和形状。
  • 立即计算点之间的路线并获得驾驶/骑行/步行估算。

另外...

  • 使用复杂的显示规则自定义标记图标、徽章、形状、颜色、路径属性等。
  • 使用强大的查询系统。
  • 在笔记中嵌入地图,具有很高的控制级别。
  • 快速切换地图图层并保存预设。
  • 保存地图以供离线使用。

还有更多,更多功能 -- 这是一个相当强大的工具。

我编写这个插件是因为我希望我不断增长的 Zettelkasten 能够回答以下问题...

  • 当我收到关于值得参观的酷地方的推荐时,如何以一种能够在以后回忆起来的方式保存它们?
  • 当我访问某个地方时,我知道该地区有哪些有趣的地方?
  • 当我为规划旅行进行研究时,如何在地图上布局用餐、徒步或住宿的选择,将它们与先前的知识结合,并为将来参考保存它们?

地图视图可以与您的笔记流程集成,以回答所有这些问题以及更多问题。

正如 Obsidian 图表视图让您可视化某些笔记之间的关联关系一样,地图视图让您可视化地理关系。

🇨🇳 中国地图支持

本版本专门为中国用户优化,提供以下特色功能:

  • 内置高德地图:默认提供高德地图作为地图源选项
  • 坐标转换:自动处理 WGS84 到 GCJ02(火星坐标系)的坐标转换
  • 智能检测:当使用包含"高德"或"autonavi.com"的地图源时自动应用坐标转换
  • 完美兼容:所有标记、路径、搜索结果都能在高德地图上正确显示
  • 完全中文化:界面、菜单、设置全部中文化

Obsidian Mobile 兼容性

该插件目前的主要限制是 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)

使用地图视图的最强大方式是从您的笔记库构建完整的个人 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 添加了一个名为"新地理位置笔记"的命令,您可以将其映射到热键并在 Obsidian 的任何地方使用。

这会打开一个对话框,您可以在其中搜索(基于您 配置的地理编码提供商 的地址或位置)或使用内置或自定义 URL 解析规则 粘贴 URL。

在现有笔记中

有多种方法向现有笔记添加地理位置。

  1. 创建格式为 [](geo:) 的内联地理位置链接,如果您开始在链接名称(括号)内输入,地图视图将启动位置搜索。如果您确认其中一个选项,它将填入位置的坐标。有关更多信息,请参阅下面的 "笔记内位置搜索" 部分。

为了使这更简化,地图视图向 Obsidian 添加了一个名为"添加内联地理位置链接"的命令,您可以将其映射到键盘快捷键。

  1. 通过使用 Obsidian 命令"向当前笔记添加地理位置(前置内容)"添加前置内容地理位置。这会打开与"新地理位置笔记"相同的对话框,允许您搜索位置名称或粘贴 URL 解析规则

  2. 如果您在其他地图服务中有想要记录的地理位置,例如来自 Google 地图,您可以从该服务复制 URL 或"lat,lng"地理位置,在笔记中右键单击并选择"粘贴为地理位置"。支持的服务是可配置的,更多详情请参阅 下面

从地图

地图提供几种工具来创建笔记或向现有笔记添加标记。

  1. 右键单击地图时使用"在此创建新笔记"。这将创建一个新笔记(基于您可以在设置中更改的模板),其中包含您点击的位置。您可以创建带有前置内容(单个地理位置)的空笔记或带有内联地理位置的空笔记。

可以使用右上方的工具搜索地图,因此您可以快速跳转到要标记的地方。 URL 解析规则 在这里也起作用,因此您可以 从 Google 地图复制地理位置(或任何其他服务)并跳转到它。

  1. 使用编辑模式:点击右侧的铅笔图标,通过点击左侧的红色按钮选择要编辑的笔记,然后使用铅笔图标下方的标记工具添加标记(或其他形状)。或者,在编辑模式下,您可以右键单击地图上的任何地方并选择"添加到编辑模式笔记"。

  2. 如果您更喜欢以文本形式输入地理位置,请在右键单击地图时使用"复制地理位置"选项之一,并将它们粘贴到笔记中。

粘贴为地理位置

地图视图监控系统剪贴板,当检测到它包含编码的地理位置(例如 Google 地图"lat, lng"位置)时,会向编辑器上下文菜单添加"粘贴为地理位置"条目。 例如,如果您在 Google 地图中右键单击某个位置并点击菜单中的第一项(lat,lng 格式的坐标,请参阅 下面),您然后可以在笔记中将其粘贴为地理位置。

或者,您可以右键单击笔记中已存在的 URL 或支持的格式化字符串,并选择"转换为地理位置"。

默认情况下,地图视图可以解析来自两个服务的 URL:OpenStreetMap"显示地址"链接和许多 URL 使用的通用"lat, lng"编码。

提示:从 Google 地图复制

桌面网页版 Google 地图为复制通用 lat, lng 坐标提供了非常简单的快捷方式。

  1. 在 Google 地图中右键单击任何地方。
  2. 第一个菜单项应该是通用坐标。点击它,坐标就会复制到剪贴板。
  3. 在任何 Obsidian 笔记中,右键单击并选择"粘贴为地理位置",或将坐标粘贴到任何地图视图搜索框中。

在笔记中嵌入地图

地图视图支持 Obsidian 代码块格式在笔记中嵌入地图。 有几种方法可以做到这一点:

  1. 嵌入现有地图。 要嵌入来自地图视图的现有地图,包括其查询和任何其他设置,请从地图的预设下拉菜单中点击"复制块"并将块粘贴到笔记中。

  1. 直接从笔记嵌入。 从编辑器,右键单击并从上下文菜单中选择"嵌入地图视图",然后输入将用于地图中心的搜索词。或者,有一个名为"地图视图:添加嵌入地图"的 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 文件。 与前置内容地理位置有些类似,地图视图从您的库中收集所有内容,并基于 显示规则过滤器 显示路径。

没有任何过滤器存在,使用默认设置,您库中任何支持的路径文件都将使用默认路径显示样式显示。

独立路径可以使用许多查询运算符如 pathnamelinkedfrom 包含或排除。

独立路径没有标签的概念,因此为了对它们应用显示规则,您有几个其他选项:

  • 在文件名中包含相关字符串并使用 pathname 运算符。
  • 使用 linkedfrom 运算符,例如有一个链接到所有 GPX 轨道的"我的跑步"笔记,并使用 linkedfrom:"我的跑步" 对这些路径应用显示规则。

以下是向您的库添加独立路径的几个选项:

  1. 使用 Obsidian 的"插入附件"命令将路径文件(例如 GPX)作为嵌入插入到您正在工作的笔记中。虽然路径不需要从笔记中引用才能在地图中显示,但将路径放在上下文中通常很有用,这个命令一步就将文件复制到库中并将其添加到笔记中。
  2. 从地图视图,通过点击右侧的铅笔图标进入编辑模式,点击文件图标,然后点击"导入路径作为库附件"。选定的文件将添加到您的默认附件文件夹下的库中。
  3. 只需使用系统的文件资源管理器将文件复制到您的库中。它应该会自动识别并出现。

内联路径

地图视图支持使用类型为 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

向笔记添加内联路径的最简单方法是使用地图视图的编辑模式。 要进入编辑模式,点击右侧的铅笔按钮,或左侧的"编辑"下拉菜单。然后选择要编辑的笔记。 从那里您可以:

  1. 使用右侧的编辑模式工具在地图上绘制路径。完成后,路径将添加到选定的笔记中。
  2. 从右侧的编辑模式工具中,点击文件图标,然后点击"导入路径并添加到编辑模式笔记"。路径将转换为 GeoJSON 并作为内联路径添加到您选定的笔记中。

(注意:如果路径被当前过滤器排除,您不会看到路径出现。)

样式化路径

与标记类似,路径在地图上的显示方式可以使用强大的 显示规则 进行大量自定义。 在这方面,标记和路径之间有两个主要区别:

  1. 路径有不同的可用于样式化的属性。
  2. 独立路径文件不支持标签,因此为了用显示规则引用它们,您需要使用名称或 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 行中定义的内联地理位置。

所有运算符都不区分大小写。

您可以将上述内容与 逻辑运算符 结合:ANDORNOT,以及使用括号分组。 这与 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(黑色)

您还可以通过在显示规则中设置"标记大小"字段来设置相对标记大小。值为 tinysmallnormallargeextra-large

标记徽章

地图视图还支持标记徽章,即添加到标记底部的小图标或文本。

这些可以在显示规则中设置,类似于标记图标。如果设置徽章,您可以设置:

  • 图标或文本:徽章图标(使用 Font Awesome 名称如 fa-camera)或要显示的徽章文本。
  • 背景颜色:徽章的背景颜色,使用与标记颜色相同的颜色名称。

更多详情请参阅 文档中的此部分

路径属性

对于路径,地图视图支持以下显示规则属性:

  • 线条颜色:路径的颜色,使用标准颜色名称如 redblue 等,或十六进制颜色如 #ff0000
  • 线条宽度:路径的宽度(以像素为单位),例如 3
  • 线条不透明度:路径的不透明度,从 0.0(完全透明)到 1.0(完全不透明)。
  • 线条样式:路径的样式,可以是 soliddasheddotted

更多详情请参阅 文档中的此部分

位置搜索和自动完成

地图视图内置了位置搜索功能,可以在多个地方使用:

  1. 在地图搜索框中
  2. 在"添加内联地理位置链接"对话框中
  3. 直接在笔记中输入 [](geo:) 格式的链接时

更改地理编码提供商

默认情况下,地图视图使用 OpenStreetMap 的 Nominatim 服务进行地理编码。但是,您可以在设置中将其更改为 Google Places 或 Google Geocoding。

要使用 Google 服务,您需要:

  1. 获取 Google Maps API 密钥
  2. 在插件设置中输入 API 密钥
  3. 选择您想要的 Google 服务

注意:使用 Google 服务可能会产生费用,请查看 Google 的定价信息。

自定义"在...中打开"操作

您可以配置自定义"在...中打开"操作,这些操作将出现在标记的右键菜单中。这允许您在外部应用程序或网站中打开位置。

要添加自定义"在...中打开"操作:

  1. 转到插件设置
  2. 找到"自定义'在...中打开'操作"部分
  3. 添加一个新操作,指定名称和 URL 模板

URL 模板可以包含以下占位符:

  • {lat} - 纬度
  • {lng} - 经度
  • {name} - 位置名称

例如,要添加在百度地图中打开的操作,您可以使用:

  • 名称:百度地图
  • URL:https://api.map.baidu.com/marker?location={lat},{lng}&title={name}

URL 解析规则

地图视图可以解析来自各种地图服务的 URL,以提取地理位置信息。您可以配置自定义 URL 解析规则以支持其他服务。

内置支持的服务包括:

  • Google 地图
  • OpenStreetMap
  • Apple 地图
  • 通用 lat,lng 格式

要添加自定义 URL 解析规则,请转到插件设置并查找"URL 解析规则"部分。

GPS 位置支持

警告! 这是一个实验性功能,效果可能因人而异。 使用前请确保阅读 文档

地图视图支持实时 GPS 位置,但由于 Obsidian Mobile 的限制,这需要配套应用程序。

在桌面版中,您可以使用浏览器的地理定位 API(如果可用)。在移动设备上,您需要使用 Geo Helper 应用程序。

要启用 GPS 支持:

  1. 在插件设置中启用"启用实验性 GPS 支持"
  2. 配置地理助手类型(命令行或 URL)
  3. 根据您的设置配置相应的命令或 URL

离线地图

地图视图支持下载地图瓦片以供离线使用。这在没有互联网连接的地区旅行时特别有用。

要使用离线地图:

  1. 转到插件设置中的"离线地图"部分
  2. 点击"管理离线存储"
  3. 选择要下载的区域和缩放级别
  4. 开始下载过程

您还可以配置:

  • 自动缓存:自动缓存您查看的瓦片
  • 自动清除:自动删除旧瓦片以节省空间
  • 最大存储:设置离线瓦片的最大存储限制

高级设置

调试日志

如果您遇到问题,可以在插件设置中启用调试日志。这将在 Obsidian 的控制台中输出详细信息,可以帮助诊断问题。

自定义设置

地图视图提供许多高级自定义选项:

  • 新笔记模板:自定义从地图创建新笔记时使用的模板
  • 标记聚类:配置如何聚类附近的标记
  • 查询格式:自定义"跟随活跃笔记"功能的查询格式
  • 前置内容修复:配置粘贴地理位置时如何处理前置内容

故障排除

常见问题

  1. 标记没有出现在地图上

    • 检查您的查询过滤器是否排除了标记
    • 验证地理位置格式是否正确
    • 确保笔记包含 locations: 前置内容标签(对于内联位置)
  2. 搜索不工作

    • 检查您的地理编码提供商设置
    • 如果使用 OpenStreetMap,确保您已设置电子邮件地址
    • 如果使用 Google,验证您的 API 密钥
  3. 中国地图位置偏移

    • 确保您选择了"高德地图"作为地图源
    • 插件会自动应用坐标转换
    • 如果仍有问题,请检查您使用的是否是 WGS84 坐标
  4. 嵌入地图不更新

    • 尝试刷新笔记视图
    • 检查嵌入的查询是否正确
    • 确保匹配的笔记实际包含地理位置

性能优化

如果地图视图运行缓慢:

  1. 减少标记数量:使用查询过滤器限制显示的标记
  2. 禁用预加载:在设置中关闭"预加载标记和路径"
  3. 优化显示规则:减少复杂的显示规则数量
  4. 清理离线瓦片:定期清理不需要的离线瓦片

键盘快捷键

地图视图提供以下可自定义的键盘快捷键:

  • 打开地图视图:打开主地图视图
  • 添加内联地理位置链接:在当前光标位置添加内联地理位置
  • 添加地理位置(前置内容):向当前笔记添加前置内容地理位置
  • 新地理位置笔记:创建带有地理位置的新笔记
  • 嵌入地图视图:在当前笔记中嵌入地图

您可以在 Obsidian 设置的"热键"部分中自定义这些快捷键。

更新日志

v6.0(当前版本)

中国地图优化

  • 新增高德地图支持:内置高德地图作为默认地图源选项
  • 智能坐标转换:自动检测高德地图并应用 WGS84 到 GCJ02 坐标转换
  • 完全中文化:界面、菜单、设置、通知全部中文化
  • 保持兼容性:代码块语言标识符保持为 mapview,确保向后兼容

原版功能更新

  • 添加了对 Obsidian 属性编辑器的更好支持
  • 改进的 GeoJSON 处理
  • 更好的移动设备支持
  • 性能优化

之前版本

  • v5.x:添加了 Svelte 重写和许多 UI 改进
  • v4.x:添加了显示规则系统
  • v3.x:添加了嵌入地图功能
  • v2.x:添加了路径支持
  • v1.x:初始发布

致谢

本插件基于 esm7/obsidian-map-view 开发,感谢原作者的出色工作。

针对中国用户的优化包括:

  • 高德地图集成
  • WGS84 到 GCJ02 坐标转换算法
  • 完整的中文界面本地化
  • 专门针对中国地图服务的优化

特别感谢:

许可证

MIT 许可证

反馈和支持

如果您遇到问题或有功能请求,请在 GitHub 上提交 issue。

对于中国用户特有的问题(如坐标转换、高德地图相关),请在 issue 中详细说明您的使用场景。


注意:使用高德地图时请遵守相关服务条款。坐标转换功能旨在提供更好的中国地图体验,但请确保您有权在您的用例中使用相应的地图服务。

About

Interactive chinese map view for Obsidian.md

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • TypeScript 81.1%
  • Svelte 16.7%
  • JavaScript 1.1%
  • CSS 1.1%