地图是数据库中的一种视图,用于在交互式地图上显示带有标记的文件。 地图是[[视图|视图]]的一种类型,可以在[[Bases 简介|数据库]]中使用。使用该视图需要安装 [Maps 插件](obsidian://show-plugin?id=maps)。 从视图菜单中选择 ![[lucide-map.svg#icon]] **地图**,即可将文件显示为交互式地图,每个文件对应一个标记点,并提供预览功能以展示该文件的属性。 ![[bases-map-places.png#interface]] ## 安装 Maps 插件 地图视图需要 Obsidian 1.10 及以上版本。[Maps 插件](obsidian://show-plugin?id=maps)是一款官方[[第三方插件|社区插件]],你可以单独下载。 1. 按照[[第三方插件#安装社区插件]]中的说明操作 2. 从列表中下载并启用 [Maps](obsidian://show-plugin?id=maps) ## 示例 首先,尝试创建一篇名为 **Eiffel Tower** 的笔记,并将以下属性复制到其中: ```yaml --- coordinates: - "48.85837" - "2.294481" icon: "landmark" color: "red" tags: - places --- ``` 以上代码的含义如下: | 属性 | 值 | | | ------------- | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------- | | `coordinates` | `48.85837`<br>`2.294481` | 坐标以 `纬度, 经度` 的格式存储。你可以在地图上右键点击某个位置并选择**复制坐标**来获取坐标。 | | `icon` | `landmark` | 来自 [Lucide 图标库](https://lucide.dev/) 的图标名称。 | | `color` | `red` | 有效的 CSS 值:十六进制、RGB、颜色名称等。 | | `tags` | `places` | 我们将用于在数据库中查找地图标记的标签。 | 现在创建一个地图视图,筛选标签为 `places` 的笔记,并使用上述属性设置标记的坐标、图标和颜色。 你也可以在 Obsidian 中打开这些[示例文件](https://github.com/obsidianmd/obsidian-maps/tree/master/examples),查看已配置好标记、图标和颜色的地图视图。 ## 设置 地图视图的设置可以在[[视图#视图设置|视图设置]]中进行配置。 - 嵌入高度 - 中心坐标 - 缩放限制 - 标记坐标、颜色和图标 - 背景 ### 标记 #### 坐标 要在地图上显示图钉,请前往[[视图#视图设置|视图设置]]并选择一个**标记坐标**属性。该属性必须包含纬度和经度坐标。支持以下格式: ```yaml # 文本属性 coordinates: "lat, lng" # 列表属性 coordinates: - "lat" - "lng" ``` 如果你将坐标分别存储为 `latitude` 和 `longitude` 属性,可以使用[[Bases 语法#公式|公式]]属性将它们合并,通过以下公式定义为坐标数组:`[latitude, longitude]`。 #### 图标 通过定义**标记图标**属性为标记添加图标。例如,你可以在笔记中添加一个名为 `icon` 的属性,并赋予它来自 Obsidian 内置 [Lucide 图标库](https://lucide.dev/icons/) 的值,如 `landmark` 或 `utensils`。 ##### 使用公式定义图标 假设你希望所有餐厅在地图上显示相同的图标: 1. 创建一篇名为 **Restaurants** 的笔记,添加名为 `icon` 的属性,值为 `utensils`。 2. 为餐厅笔记添加名为 `type` 的属性,链接到 `[[Restaurants]]` 笔记。 3. 在数据库中添加一个名为 `Type icon` 的公式属性,代码如下: ```js list(type)[0].asFile().properties.icon ``` 4. 在视图设置中选择 `Type icon` 作为标记图标。 大功告成!现在你的地图将显示来自地点*类型*的图标,而非地点本身的图标。 #### 颜色 设置标记的颜色。支持 RGB `rgb(0,0,0)`、十六进制 `#000` 或 CSS 变量如 `var(--color-blue)` 等值。与上面的图标示例类似,你可以使用公式属性来动态定义颜色。 ### 背景 #### 地图瓦片 地图瓦片是显示数字地图的标准方式。有多种服务可用于自定义地图的样式、颜色和字体。Maps 支持栅格和矢量瓦片,并接受大多数瓦片 URL,包括 TileJSON URL。 [OpenFreeMap](https://openfreemap.org/) 提供了几种免费样式供使用。尝试在**地图瓦片**设置中使用以下 URL: | 名称 | URL | | -------- | ------------------------------------------------ | | Dark | `https://tiles.openfreemap.org/styles/dark` | | Positron | `https://tiles.openfreemap.org/styles/positron` | | Liberty | ``https://tiles.openfreemap.org/styles/liberty`` | #### 实用链接 - [Maputnik](https://maputnik.github.io/) 用于自定义地图瓦片。 - [Protomaps](https://protomaps.com/) 用于自托管地图瓦片。 - 其他提供免费层的托管服务包括 [MapTiler](https://www.maptiler.com/) 和 [Mapbox](https://www.mapbox.com/)。 ## 提示 你可以使用[[公式]]链接到常用的地图服务。例如,你的图钉可以使用以下公式显示一个指向 Google Maps 的链接: ```js link("https://www.google.com/maps/search/" + file.name.replace(" ","+"),"Google Maps") ``` ## 故障排查 如果首次加载 Maps 插件时地图显示为空白,请尝试[[更新 Obsidian|更新 Obsidian 安装程序版本]]。 [Maps 插件](https://github.com/obsidianmd/obsidian-maps)是开源的。你可以通过提交错误报告、功能请求和拉取请求来贡献力量。