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

慈云数据 7个月前 (05-09) 技术支持 38 0

前文链接: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);
}
微信扫一扫加客服

微信扫一扫加客服

点击启动AI问答
Draggable Icon