QGraphicsView实现简易地图1『加载离线瓦片地图』

最简单粗暴的加载方式,将每一层级的所有瓦片地图全部加载
注:该方式仅能够在瓦片地图层级较低时使用,否则卡顿!!!

瓦片地图数据来源:水经注-高德地图-卫星地图
瓦片地图瓦片大小:256 * 256像素
瓦片地图坐标投影:GCJ02 Web 墨卡托投影

1、动态演示效果:
在这里插入图片描述

2、静态展示图片:
在这里插入图片描述
核心代码

1、场景粗暴加载瓦片地图
在这里插入图片描述

void MapScene::wheelEvent(QGraphicsSceneWheelEvent *wheelEvent)
{
	wheelEvent->delta() > 0 ? ++m_curLevel : --m_curLevel;
	clear();

	double len = PIXMAP_SIZE * pow(2, m_curLevel);
	setSceneRect(QRect(0, 0, len, len));
	updateScene();

	QGraphicsScene::wheelEvent(wheelEvent);
}
void MapScene::updateScene()
{
	QString dirPath = QString("F:/MapData/GaoDeMap/Map/MapPng/L0%1").arg(m_curLevel + 1);
	int size = pow(2, m_curLevel);
	for (int row = 0; row < size; ++row)
	{
		for (int col = 0; col < size; ++col)
		{
			QString fileName = QString("%1/Map_%2-%3.png").arg(dirPath)
				.arg(QString::number(row + 1).rightJustified(2, '0')).arg(QString::number(col + 1).rightJustified(2, '0'));
			QPixmap pixmap(fileName);
			QGraphicsPixmapItem *item = new QGraphicsPixmapItem(pixmap);
			item->setPos(PIXMAP_SIZE * col, PIXMAP_SIZE * row);
			addItem(item);
		}
	}
}
  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
Qt是一个跨平台的C++图形用户界面应用程序开发框架,其提供了丰富的功能和库,方便开发者进行软件开发。要加载离线瓦片地图,我们可以通过以下步骤来实现: 1. 准备离线瓦片地图数据:首先,需要将瓦片地图数据下载到本地存储中,并将其组织为对应的目录结构。离线瓦片地图数据通常以图像文件的形式存在,根据不同的层级和行列,文件名会有所不同。确保你有一份完整的、有层级结构的瓦片地图数据。 2. 创建一个Qt项目:打开Qt IDE,创建一个新项目,并选择合适的项目模板。在这个项目中,我们将创建一个简单的地图应用来加载离线瓦片地图。 3. 添加QGraphicsView和QGraphicsScene:在主窗口中添加一个QGraphicsView以及一个关联的QGraphicsScene。这将为我们提供一个可用于显示地图内容的视图。 4. 加载瓦片地图:在Qt项目中,我们可以使用QGraphicsPixmapItem类来加载图片并显示在场景中,因此,我们可以通过迭代遍历地图目录中的所有文件,并使用QGraphicsPixmapItem将它们添加到场景中的适当位置。 5. 设置地图的坐标系和缩放:为了正确显示地图,我们需要设置地图的坐标系,并根据需要进行缩放。可以使用QGraphicsView的方法来设置坐标系范围和缩放级别,以确保地图在合适的比例下显示。 6. 运行应用程序:通过编译和运行Qt项目,在应用程序窗口中应该能够看到已加载离线瓦片地图。你可以自由缩放和平移地图来查看你感兴趣的区域。 通过这些步骤,我们可以在Qt应用程序中成功加载离线瓦片地图。这为我们提供了一个便捷的解决方案,以在没有网络连接的情况下显示地图数据。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浮生卍流年

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值