const int MIN_MAP_ZOOM_LEVEL = 0; ///< Minimum zoom level
const int MAX_MAP_ZOOM_LEVEL = 18; ///< Maximum zoom level
-const int MIN_VIEW_ZOOM_LEVEL = 2; ///< Minimum zoom level for MapView
+const int MIN_VIEW_ZOOM_LEVEL = 3; ///< Minimum zoom level for MapView
const int MIN_MAP_SCENE_NORMAL_LEVEL = MAX_MAP_ZOOM_LEVEL + 1;
const int MAX_TILES_PER_SIDE = (1 << MAX_MAP_ZOOM_LEVEL);
qDebug() << __PRETTY_FUNCTION__;
m_zoomLevel = newZoomLevel;
- emit zoomLevelChanged(m_zoomLevel);
+ zoomed();
}
void MapEngine::setViewLocation(QPointF latLonCoordinate)
emit locationChanged(m_sceneCoordinate);
getTiles(m_sceneCoordinate);
m_mapScene->removeOutOfViewTiles();
+ m_mapScene->setSceneVerticalOverlap(m_viewSize.height(), m_zoomLevel);
}
void MapEngine::viewZoomFinished()
emit minZoomLevelReached();
}
+void MapEngine::zoomed()
+{
+ emit zoomLevelChanged(m_zoomLevel);
+ m_mapScene->setTilesDrawingLevels(m_zoomLevel);
+ getTiles(m_sceneCoordinate);
+ m_mapScene->setSceneVerticalOverlap(m_viewSize.height(), m_zoomLevel);
+}
+
void MapEngine::zoomIn()
{
qDebug() << __PRETTY_FUNCTION__;
if (m_zoomLevel < MAX_MAP_ZOOM_LEVEL) {
m_zoomLevel++;
m_zoomedIn = true;
- emit zoomLevelChanged(m_zoomLevel);
-
- m_mapScene->setTilesDrawingLevels(m_zoomLevel);
-
- getTiles(m_sceneCoordinate);
+ zoomed();
}
}
if (m_zoomLevel > MIN_VIEW_ZOOM_LEVEL) {
m_zoomLevel--;
- emit zoomLevelChanged(m_zoomLevel);
-
- m_mapScene->setTilesDrawingLevels(m_zoomLevel);
-
- getTiles(m_sceneCoordinate);
+ zoomed();
}
}
{
qDebug() << __PRETTY_FUNCTION__;
-
+ setBackgroundBrush(Qt::darkGray);
setSceneRect(-WORLD_PIXELS_X, 0, WORLD_PIXELS_X * 3 - 1, WORLD_PIXELS_Y - 1);
}
// delete tile;
}
+void MapScene::setSceneVerticalOverlap(int viewHeight, int zoomLevel)
+{
+ qDebug() << __PRETTY_FUNCTION__;
+
+ int overlap = viewHeight / 2 * (1 << (MAX_MAP_ZOOM_LEVEL - zoomLevel));
+
+ QRect rect = sceneRect().toRect();
+ rect.setTop(-overlap);
+ rect.setBottom(WORLD_PIXELS_Y + overlap - 1);
+ setSceneRect(rect);
+}
+
void MapScene::setTilePosition(MapTile *tile)
{
qDebug() << __PRETTY_FUNCTION__;