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

前文链接: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);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/607019.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

压缩机继电器EOCRDS-30NY7Q升级后型号:EOCRDS3-30S

EOCR-DS3系列型号: EOCRDS3-05S EOCRDS-05S EOCRDS1-05S EOCRDS3-30S EOCRDS-30S EOCRDS1-30S EOCRDS3-60S EOCRDS-60S EOCRDS1-60S EOCRDS3-05W EOCRDS-05W EOCRDS1-05W EOCRDS3-30W EOCRDS-30W EOCRDS1-30W EOCRDS3-60W EOCRDS-60W EOCRDS1-60W EOCR-DS3T-…

extern关键字的使用。keil中编译时,出现error:identifier xxx is undefined

问题 编译时,出现error: identifier “Reg_Flag” is undefined extern Reg_Flag reg_flag; 很奇怪,我明明已经定义了。无非就是定义是在extern的下面,会不会是这个原因? 解决 果然,把extern的部分放到…

3D模型如何实现拖拽打开?---模大狮模型网

在当今数字化时代,3D技术的应用已经深入到各行各业,为用户带来了更加丰富、生动的体验。然而,对于一些用户来说,打开和查看3D模型可能会面临一些困难,特别是在无法拖拽打开时。本文将为您揭示解决这一问题的方法&#…

智能商品计划系统:引领未来零售业的革新之路

随着科技的飞速发展,人工智能(AI)和大数据技术已成为推动各行业革新的关键动力。在零售行业中,智能商品计划系统的出现,正逐步改变着传统的商品规划与管理方式,为品牌注入新的活力与竞争力。本文将对智能商…

TMS320F280049 CLB模块--总览(0)

CLB模块是可配置的逻辑块,和FPGA的CLB有些不同。 下图是CLB模块在系统中的交互,图中CLB XBAR和TILE是CLB。从049中有4个CLB,也就是TILE1-4。 下图是CPU和CLB交互的示意图。 下图是CLB的时钟。 参考文档: TMS320F28004x Real-Tim…

欢乐钓鱼大师内置辅助,游戏脚本!自动操作!

在《欢乐钓鱼大师》游戏中,探索珍稀鱼类成为钓鱼大师的过程充满了乐趣和挑战。下面是一些特殊鱼类的钓鱼技巧和详细攻略,助你在游戏中获得更好的成绩和丰厚的奖励。 一、碘化之齿 碘化之齿是游戏中一种珍稀的鱼类,它的出现需要一定的条件和技…

STC8增强型单片机开发 【GPIO的理解⭐⭐】

目录 一、引言 二、GPIO概述 三、GPIO的功能 1. 输入功能: 2. 输出功能 四、GPIO的配置方法 1. 选择GPIO端口和引脚: 2. 设置GPIO模式: 3. 配置GPIO参数: 五、GPIO应用实例 1. 硬件连接: 2. 编程实现&…

探索精酿啤酒:从经典到创新

Fendi club啤酒一直以来都以其卓着的品质和与众不同的口感深受消费者喜爱。而随着时代的变迁和消费者口味的不断变化,Fendi club啤酒也在不断地探索和创新,以满足市场的多样化需求。 在经典的口感和风味基础上,Fendi club啤酒不断地尝试新的原…

sql Server2015安装——参考的教程

1.sql Server安装包来自:https://mp.weixin.qq.com/s/Pe_YbWw_MgwjzzZhQWIYfA 2.需要的替换文件和补丁:https://blog.csdn.net/Auspicious_air/article/details/108315154 https://blog.csdn.net/m0_60477996/article/details/126748477 3.安装manger…

MybatisPlus 构造器wrapper的使用与原理

系列文章目录 MyBatis缓存原理 Mybatis plugin 的使用及原理 MyBatisSpringboot 启动到SQL执行全流程 数据库操作不再困难,MyBatis动态Sql标签解析 Mybatis的CachingExecutor与二级缓存 使用MybatisPlus还是MyBaits ,开发者应该如何选择? My…

极简—springMVC工作流程

1、流程图 2、流程 发起请求:客户端通过 HTTP 协议向服务器发起请求。前端控制器:这个请求会先到前端控制器 DispatcherServlet,它是整个流程的入口点,负责接收请求并将其分发给相应的处理器。处理器映射:DispatcherS…

SDN和SD-WAN的对比

在数字化浪潮的推动下,SDN(软件定义网络)和SD-WAN(软件定义广域网)作为企业网络技术的两大支柱,正逐步引领网络架构的革新。尽管两者在理念和基础上有所共通,但在实际应用、功能特性和部署策略上…

视频号小店不直播怎么出单?这里面的秘密,一篇文章全曝光!

大家好,我是电商糖果 这两年关于视频号搞电商的话题度非常高,也吸引了很多商家入驻。 视频号因为背后巨大的私域流量池扶持,所以它的转化率非常高。 根据官方发出来的战报,我们也可以看出它的数据是翻倍增长。 在2024微信公开…

52. 【Android教程】网页视图:WebView

在前面的章节我们所围绕的全部都是纯客户端开发,我们叫 Native 开发。这样的好处就是体验和性能会非常好,但是在实际的使用中我们会发现存在大量的 H5 页面。这样就可以结合 Native / H5 双端的优势完成一个混合开发,而在这种开发模式中首当其…

Photoshop 2022 for Mac/win:释放创意,打造专业级的图像编辑体验

在数字图像编辑的世界里,Adobe Photoshop 2022无疑是那颗璀璨的明星。这款专为Mac和Windows用户设计的图像处理软件,以其卓越的性能和丰富的功能,赢得了全球数百万创作者的青睐。 Photoshop 2022在继承前代版本强大功能的基础上,…

QGraphicsView实现简易地图11『指定层级-定位坐标』

前文链接:QGraphicsView实现简易地图10『自适应窗口大小』 提供一个地图初始化函数,指定地图显示的中心点和地图缩放层级 能够让地图显示某一层级的瓦片,并将中心点坐标显示在视图中心。 1、动态演示效果 7级地图-大连-老虎滩 定位到 8级地图…

ChatGLM3大模型本地化部署、应用开发与微调

文章目录 写在前面ChatGLM3推荐图书作者简介推荐理由粉丝福利写在后面 写在前面 本期博主给大家推荐一本初学者学习并部署大模型的入门书籍,一起来看看吧! ChatGLM3 ChatGLM3是继一系列先进语言模型之后的又一力作,专为追求高精度和广泛适…

nature《自然》期刊文献怎么在家查看下载

nature《自然》期刊我们都知道,是世界上历史悠久的、最有名望的科学杂志之一。下载该期刊文献是需要使用权限的,如果你没有nature《自然》期刊的资源,又该如何获取呢?请看本文的经验分享。 一、先百度“文献党下载器” 在文献党下…

力扣HOT100 - 153. 寻找旋转排序数组中的最小值

解题思路&#xff1a; 与33题类似。 class Solution {public int findMin(int[] nums) {int l 0;int r nums.length - 1;if (nums[r] > nums[l]) return nums[0];while (l < r) {int mid l (r - l) / 2;if (nums[0] > nums[mid]) {r mid - 1;} else {l mid 1…

如何在树莓派 Raspberry Pi中本地部署一个web站点并实现无公网IP远程访问

文章目录 前言1. 安装 Raspberry Pi OS2. 测试 web 站点3. 安装静态样例站点4. 将web站点发布到公网4.1 安装 Cpolar4.2 cpolar进行token认证4.3 生成cpolar随机域名网址4.4 生成cpolar二级子域名4.5 将参数保存到cpolar配置文件中4.6 测试修改后配置文件4.7 配置cpolar服务开机…