35_制作交互式画布地图 QGIS3
原文链接: https://www.qgistutorials.com/en/docs/3/interactive_canvas_maps.html
制作交互式画布地图 (QGIS3)¶
本教程展示了如何在 QGIS 画布中移动光标时,使要素动态更新。我们将使用表达式实现画布笔刷效果,使要素能够响应光标移动。
任务概述¶
我们将创建一个由 QGIS 图标组成的网格,并应用数据定义的覆盖来控制图标旋转,使图标跟随光标移动。

操作步骤¶
-
我们将从创建一个网格开始。为了创建具有全球范围的网格,我们可以在画布上加载世界地图。您可以在 QGIS 窗口底部的坐标框中输入
world并按回车。 这是 QGIS 中几个隐藏的 彩蛋 之一。您可以在我们的 YouTube 频道 发现其他彩蛋。
-
一个新的
World Map图层将被添加到 QGIS 图层面板中。转到 处理 ‣ 工具箱。
-
搜索并找到 矢量创建 ‣ 创建网格 算法。双击打开它。

-
在"创建网格"对话框中,点击下拉菜单 从图层计算 ‣ World Map。

-
接下来,将 水平间距 和 垂直间距 设置为
20度。点击 网格 旁边的...按钮,选择 保存到文件。浏览到计算机上的一个文件夹,输入文件名grid.gpkg。点击 运行。
-
一个新的
grid图层将被添加。点击图层面板中的 打开图层样式面板 按钮。点击 简单标记。
-
在下拉菜单中,选择
SVG 标记作为符号类型。
-
向下滚动到 SVG 浏览器部分,选择 logos 文件夹。选择 QGIS 图标。

-
滚动到 大小 选项,将大小设置为
5。
-
接下来,找到 旋转 选项,点击数据定义的覆盖按钮。选择 编辑…。

-
我们将添加一个表达式,该表达式将根据当前光标位置动态计算图标的旋转。由于我们的图标指向 135° 方位角,这将是 0 旋转。当光标移动时,表达式将计算图标和光标位置之间的方位角,并计算其需要旋转以指向光标的角度。输入以下表达式并点击 确定。
bash degrees(azimuth(@geometry, @canvas_cursor_point)) - 135
-
地图画布尚未对光标移动做出响应,因为除非移动地图,否则它不会刷新。让我们使其自动刷新。右键单击
grid图层并选择 属性。
-
切换到 渲染 选项卡。向下滚动并勾选 按间隔刷新图层。将间隔设置为一个较小的数字,例如
0.1(即 100 毫秒),然后点击 确定。
-
回到主窗口,关闭
World Map图层的可见性。现在,当您移动光标时,所有图标都会旋转以指向您当前的位置。
-
这个有趣的练习旨在帮助您理解如何使用 @canvas_cursor_point 变量来创建响应鼠标移动的动态图层。

如果您想就本教程提供反馈或分享您的经验,请在下方评论。(需要 GitHub 帐户)