QGraphicsView实现简易地图12『平移与偏移』

ops/2024/9/24 8:27:29/

前文链接:QGraphicsView实现简易地图11『指定层级-定位坐标』
提供地图平移与偏移功能。地图平移是指将地图的中心点更改为给定的点,即移动地图到指定位置。地图偏移是指将当前视口内的地图向上/下/左/右/进行微调,这里偏移视口宽/高的四分之一。
1、动态演示效果
在这里插入图片描述

2、平移与偏移代码

void WHMapView::panTo(const QPointF &geoCenter)
{m_geoCoord = GeoCoord(geoCenter.x(), geoCenter.y());// 经纬度坐标转场景坐标、视图定位到中心点QPointF offsetPos = QPointF(viewport()->width() / 2.0, viewport()->height() / 2.0);QPointF scenePos = MapUtility::sceneCoordFromGeoCoord(m_geoCoord, m_curLevel);horizontalScrollBar()->setValue(scenePos.x() - offsetPos.x());verticalScrollBar()->setValue(scenePos.y() - offsetPos.y());moveScene();emit geoCoordChanged(m_geoCoord);
}void WHMapView::panTop()
{double offsetValue = 4.0;QPointF scenePos = mapToScene(viewport()->width() / 2.0, viewport()->height() / offsetValue);m_geoCoord = MapUtility::geoCoordFromScene(scenePos, m_curLevel);verticalScrollBar()->setValue(verticalScrollBar()->value() + viewport()->height() / offsetValue);moveScene();emit geoCoordChanged(m_geoCoord);
}void WHMapView::panBottom()
{double offsetValue = 4.0;QPointF scenePos = mapToScene(viewport()->width() / 2.0, viewport()->height() / offsetValue);m_geoCoord = MapUtility::geoCoordFromScene(scenePos, m_curLevel);verticalScrollBar()->setValue(verticalScrollBar()->value() - viewport()->height() / offsetValue);moveScene();emit geoCoordChanged(m_geoCoord);
}void WHMapView::panLeft()
{double offsetValue = 4.0;QPointF scenePos = mapToScene(viewport()->width() / offsetValue, viewport()->height() / 2.0);m_geoCoord = MapUtility::geoCoordFromScene(scenePos, m_curLevel);horizontalScrollBar()->setValue(horizontalScrollBar()->value() + viewport()->width() / offsetValue);moveScene();emit geoCoordChanged(m_geoCoord);
}void WHMapView::panRight()
{int offsetValue = 4;QPointF scenePos = mapToScene(viewport()->width() / offsetValue, viewport()->height() / 2);m_geoCoord = MapUtility::geoCoordFromScene(scenePos, m_curLevel);horizontalScrollBar()->setValue(horizontalScrollBar()->value() - viewport()->width() / offsetValue);moveScene();emit geoCoordChanged(m_geoCoord);
}

http://www.ppmy.cn/ops/38434.html

相关文章

泛娱乐出海新趋势

在全球化和数字化浪潮的推动下,泛娱乐领域正在经历快速变革,中国应用开发者纷纷走向全球市场,并且在国际舞台上大放异彩,据Sensor Towers数据显示,2023年10月,中国移动发行商的收入占全球应用收入的38.7%&a…

C++之Eigen库基本使用

目录 1、矩阵的构造和初始化操作 2、矩阵的算术运算 3、矩阵的分解和求解 4、矩阵的变换 5、矩阵的访问和修改 6、矩阵遍历 7、线性方程组求解 8、其他操作 Eigen库是一个高级的C库,用于线性代数,矩阵和向量运算,数值分析和相关的数学…

Java 高级面试问题及答案 更新(二)

Java 高级面试问题及答案 以下是几个常见的Java高级面试问题及其答案,这些问题覆盖了Java语言的核心概念和高级特性。 问题1: 什么是Java内存模型(JMM),它在并发编程中扮演着什么角色? 答案: Java内存模型(JMM)是一个抽象的概念…

推荐 3 个 yyds 的开源项目!

本期推荐开源项目目录: 1. AI 搜索引擎 2. 大模型聊天框架 3. 模仿抖音的移动端短视频 01 AI 搜索引擎 Perplexica 是一个开源的、由 AI 驱动的搜索引擎。它深入互联网寻找答案,不仅搜索网络,还理解您的问题。 Perplexica 受到 Perplexity AI…

Go实战训练之Web Server 与路由树

Server & 路由树 Server Web 核心 对于一个 Web 框架,至少要提供三个抽象: Server:代表服务器的抽象Context:表示上下文的抽象路由树 Server 从特性上来说,至少要提供三部分功能: 生命周期控制&…

【Unity Shader入门精要 第5章】开始 Unity Shader 学习之旅

1. shaderLab语义 在之前的代码中,经常会看到类似POSITION 、SV_POSITION之类的东西,这些都属于shaderLab的语义。简单来讲,这类语义的作用就是用来通知Unity某个变量(或参数、输出)是干什么用的,可以以此…

【2022 深圳 ArchSummit 】大数据架构稳定性保障实践

文章目录 一、前言二、现状三、大数据架构的历史变迁(一)洪荒期&MR(二)远古期&MPP(四)近现代&Flink/Spark(五)现如今&实时数据湖架构 四、架构稳定的关键因素&#…

C语言—深入理解指针(1)

1.内存和地址 1.1 内存 计算机上CPU(中央处理器)在处理数据的时候,需要的数据是在内存中读取的,处理后的数据也会放回内存中,那我们买电脑的时候,电脑上内存是8GB/16GB/32GB 等,其实管理方式也…