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);
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++】GNU Debugger (GDB) 使用示例

文章目录 GDB 使用示例GDB的常用命令示例 GDB 使用示例 GDB的常用命令 GDB(GNU Debugger)是一种Unix下的程序调试工具,用于调试C、C等编程语言编写的程序。以下是一些GDB的常用命令: 启动和退出: run 或 r&#xf…

【ArcGIS 脚本工具】格式化简单渲染图层或图层组

CAD加GIS是规划人的黄金搭档,不可偏废。 小编通常直接在ArcPro中加载CAD查看,这样可以保证CAD修改之后GIS能同步更新显示。 但是CAD在ArcPro中的显示多少有点水土不服。 比如湘源地块在ArcPro3.0中显示时会自动加上透明度,虽然这样可以看到…

汇集全球顶级AI的自助平台

1、介绍:此平台以其开放和便捷的特性,为用户提供了一个无需月费的 AI 服务入口。咱可以根据自己的需求,灵活选择和付费使用平台上的 AI 技术。 该平台强调的核心优势在于 “零门槛” 和 “按需付费”,意味着用户不需要进行大额预付或者承担长期的固定费用,而是可以根据实际…

利用爬虫解决数据采集难题

文章目录 安装为什么选择 BeautifulSoup 和 requests?安装 BeautifulSoup 和 requests解决安装问题 示例总结 在现代信息时代,数据是企业决策和发展的关键。然而,许多有用的数据分散在网络上,且以各种格式和结构存在,因…

设计模式学习(八)——《大话设计模式》

设计模式学习(八)——《大话设计模式》 单一职责原则 单一职责原则(Single Responsibility Principle, SRP)是软件开发中 SOLID 原则之一,由罗伯特C马丁(Robert C. Martin)提出。它指的是一个类…

Could not find the Qt platform plugin “dxcb“ in ““、 重点:是dxcb

这个重点就在于是dxcb不是xcb,让我一顿好找。 https://bugs.launchpad.net/ubuntu/source/deepin-qt5dxcb-plugin/bug/1826629 这篇文章描述了应该是deepin系统的一个问题,应该已经修复了不知道为什么我还会遇到。 不过知道是dxcb后直接去qtcreater里的系…

ROS 2边学边练(45)-- 构建一个能动的机器人模型

前言 在上篇中我们搭建了一个机器人模型(其由各个关节(joint)和连杆(link)组成),此篇我们会通过设置关节类型来实现机器人的活动。 在ROS中,关节一般有无限旋转(continuous),有限旋转…

Android 注解

自定义注解 注解原理 注解本质是一个接口,Java中所有注解都是继承了Annotation接口的 注解(…):其实就是一个实现类对象,实现了该注解以及Annotation接口。

TB交易开拓者旗舰版自动交易的设置

本文针对TB交易开拓者旗舰版V6.0.7.0(期货程序化交易软件下载 - 交易开拓者),目前网上没有自动交易设置的完整教程,特写此篇。 1. 设置期货账户的自动登录和登出。点击菜单“文件/系统设置”,然后在“安全”tab做如下设置: 2 设置你的期货账…

C++向函数传递对象

C语言中,对象作为函数的参数和返回值的传递方式有 3 种:值传递、指针传递和引用传递。 1. 对象作为函数参数 把实参对象的值复制给形参对象,这种传递是单向的,只从实参到形参。因此,函数对形参值做的改变不会影响到实…

Sybase数据库分页查询(指定起始位置)

针对单表数据量过大的场景,分页查询必不可少。针对sybase数据库分页查询的案例全网稀少,特别是指定起始页的分页查询实现。 本文依靠实际开发场景,特此总结Sybase数据库分页查询(指定起始位置)。 目录 一、 SQL实现分…

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

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

git对远程和本地分支进行重命名

要同时对Git的远程和本地分支进行重命名,你需要分几个步骤操作: 重命名本地分支 切换到其他分支:在重命名当前分支之前,确保你不在你想要重命名的那个分支上。你可以通过以下命令切换到另一个分支(比如切换到master分…

5.06号模拟前端面试8问

5.06号模拟前端面试8问 1.promise如何实现then处理 在JavaScript中,Promise 是一个代表异步操作最终完成或失败的对象。它有三种状态:pending(等待),fulfilled(完成),rejected&…

红日靶场ATTCK攻击合集

工作繁忙,笔记更新的有比较慢,转到CSDN同步更新很麻烦,直接看原始的笔记吧。不足之处欢迎多多指点。 已经打完的靶场如下: 红日靶场ATT&CK1:https://blog.csdn.net/weixin_44288604/article/details/108172737红…

Java面试题:描述Exchanger类的用途以及如何用它来交换数据

在编程中,Exchanger 类通常是Java并发编程中用于线程间数据交换的一个类。它属于java.util.concurrent包,提供了一种在两个线程之间进行数据交换的机制。使用Exchanger,两个线程可以交换数据,每个线程都可以提供数据并接收对方的数…

【漏洞复现】GB28181摄像头管理平台api接口处存在未授权漏洞

免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该…

faad2交叉编译——aac解码为pcm,解决faad单通道转双通道问题

FAAD是比较成熟高效的开源AAC解码库,这里用于解码AAC生成PCM数据,用于音频播放。这里因为faad库,会将单通道转化为双通道踩了些坑,所以记录一下。 我使用的是2.11.0版本,貌似往前的版本没有使用CMake,需要c…

C++中如何自己封装一个Callable

需求背景 有时候静态编译太不灵活,我们需要更灵活的运行时操作。 又或真假设你在开发一个脚本,想注册本地的C函数到脚本语言的标准库中。例如gdscript的Callable。 下面是一个我的一个简单的实现。我们假设脚本语言中的变量类型是std::any。根据情况不…

《Fundamentals of Power Electronics》——一些常用变换器的正则电路参数值

对于理想的CCM PWM dc-dc转换器,其包含一个电感和电容,正则模型有效的低通滤波器需要包含一个电感和一个电容。正则模型简化为如下图所示。 假设电容与负载直接相连。基础的buck、boost和buck-boost转换器的参数值如下表所示。 该模型可以用传统的线性电…