Raised MapTile scene zValues for normal tiles.
authorSami Rämö <sami.ramo@ixonos.com>
Tue, 13 Apr 2010 05:47:41 +0000 (08:47 +0300)
committerSami Rämö <sami.ramo@ixonos.com>
Tue, 13 Apr 2010 05:47:41 +0000 (08:47 +0300)
src/common.h
src/map/mapengine.cpp
src/map/mapengine.h
src/map/mapscene.cpp
src/map/maptile.cpp
src/map/mapview.cpp

index ec22bef..dcd3399 100644 (file)
@@ -5,17 +5,23 @@
 
 static const int TILE_SIZE_X = 256; ///< Tile image size in x direction
 static const int TILE_SIZE_Y = 256; ///< Tile image size in y direction
-static const int MIN_ZOOM_LEVEL = 0; ///< Minimum zoom level
-static const int MAX_ZOOM_LEVEL = 18; ///< Maximum zoom level
+
+static const int MIN_MAP_ZOOM_LEVEL = 0; ///< Minimum zoom level
+static const int MAX_MAP_ZOOM_LEVEL = 18; ///< Maximum zoom level
+static const int MIN_MAP_SCENE_NORMAL_LEVEL = MAX_MAP_ZOOM_LEVEL + 1;
+
 static const int ZOOM_FPS = 30; ///< FPS for the zoom effect
 static const qreal ZOOM_TIME = 0.25; ///< Length of the zoom effect (seconds)
+
 static const qreal MIN_LATITUDE = -85.0511; ///< Minimum latitude value
 static const qreal MAX_LATITUDE = 85.0511;  ///< Maximum latitude value
 static const qreal MIN_LONGITUDE = -180.0;  ///< Minimum longitude value
 static const qreal MAX_LONGITUDE = 180.0;  ///< Maximum longitude value
+
 static const int GRID_WIDTH = 4;
 static const int GRID_HEIGHT = 4;
 static const int GRID_PADDING = 1;
+
 /**
 * \var UNDEFINED
 * \brief Value to be used when zoom level, tile numbers or position are not defined
index 67b07c6..5651292 100644 (file)
@@ -182,7 +182,7 @@ void MapEngine::viewResized(const QSize &size)
 
 void MapEngine::zoomIn()
 {
-    if (m_zoomLevel >= MAX_ZOOM_LEVEL)
+    if (m_zoomLevel >= MAX_MAP_ZOOM_LEVEL)
         return;
 
     m_zoomLevel++;
@@ -193,7 +193,7 @@ void MapEngine::zoomIn()
 
 void MapEngine::zoomOut()
 {
-    if (m_zoomLevel <= MIN_ZOOM_LEVEL)
+    if (m_zoomLevel <= MIN_MAP_ZOOM_LEVEL)
         return;
 
     m_zoomLevel--;
index 75b9275..1d9cd98 100644 (file)
@@ -67,7 +67,7 @@ public:
 
     static QPoint convertTileNumberToSceneCoordinate(int zoomLevel, QPoint tileNumber)
     {
-        int pow = 1 << (MAX_ZOOM_LEVEL - zoomLevel);
+        int pow = 1 << (MAX_MAP_ZOOM_LEVEL - zoomLevel);
         int x = tileNumber.x() * TILE_SIZE_X * pow;
         int y = tileNumber.y() * TILE_SIZE_Y * pow;
 
@@ -76,7 +76,7 @@ public:
 
     static QPoint convertSceneCoordinateToTileNumber(int zoomLevel, QPointF sceneCoordinate)
     {
-        int pow = 1 << (MAX_ZOOM_LEVEL - zoomLevel);
+        int pow = 1 << (MAX_MAP_ZOOM_LEVEL - zoomLevel);
         int x = static_cast<int>(sceneCoordinate.x() / (TILE_SIZE_X*pow));
         int y = static_cast<int>(sceneCoordinate.y() / (TILE_SIZE_Y*pow));
 
@@ -117,7 +117,7 @@ public:
         if ((latitude > MAX_LATITUDE) || (latitude < MIN_LATITUDE))
             return QPoint(UNDEFINED, UNDEFINED);
 
-        qreal z = static_cast<qreal>(1 << MAX_ZOOM_LEVEL);
+        qreal z = static_cast<qreal>(1 << MAX_MAP_ZOOM_LEVEL);
 
         qreal x = static_cast<qreal>((longitude + 180.0) / 360.0);
         qreal y = static_cast<qreal>((1.0 - log(tan(latitude * M_PI / 180.0) + 1.0
index 29484f9..b862256 100644 (file)
@@ -28,7 +28,7 @@ MapScene::MapScene(QObject *parent)
     : QGraphicsScene(parent)
 {
     /// @todo Write test case for setting scene size
-    const int maxTilesPerSide = (1 << MAX_ZOOM_LEVEL);
+    const int maxTilesPerSide = (1 << MAX_MAP_ZOOM_LEVEL);
     const int maxPixelsPerSide = maxTilesPerSide * TILE_SIZE_X;
     setSceneRect(0, 0, maxPixelsPerSide, maxPixelsPerSide);
 }
index eaa8bca..322ca6f 100644 (file)
@@ -43,9 +43,9 @@ void MapTile::setZoomLevel(int zoomLevel)
     m_zoomLevel = zoomLevel;
     setPosition();
 
-    setZValue(zoomLevel);
+    setZValue(static_cast<qreal>(MIN_MAP_SCENE_NORMAL_LEVEL + zoomLevel));
 
-    qreal zoomFactor = (qreal)(1 << (MAX_ZOOM_LEVEL - m_zoomLevel));
+    qreal zoomFactor = static_cast<qreal>(1 << (MAX_MAP_ZOOM_LEVEL - m_zoomLevel));
     setScale(zoomFactor);
 }
 
@@ -64,7 +64,7 @@ void MapTile::setPosition()
 {
     const int maxTileNumber = (1 << m_zoomLevel) - 1;
 
-    if ((m_zoomLevel >= MIN_ZOOM_LEVEL) && (m_zoomLevel <= MAX_ZOOM_LEVEL) &&
+    if ((m_zoomLevel >= MIN_MAP_ZOOM_LEVEL) && (m_zoomLevel <= MAX_MAP_ZOOM_LEVEL) &&
             (m_tileNumber.x() >= 0) && (m_tileNumber.x() <= maxTileNumber) &&
             (m_tileNumber.y() >= 0) && (m_tileNumber.y() <= maxTileNumber)) {
         setPos(MapEngine::convertTileNumberToSceneCoordinate(m_zoomLevel, m_tileNumber));
index 5019e22..8f457e0 100644 (file)
@@ -45,7 +45,7 @@ MapView::MapView(QWidget *parent) : QGraphicsView(parent)
 
 void MapView::setZoomLevel(int zoomLevel)
 {
-    m_zoomTargetScale = pow(2, zoomLevel - MAX_ZOOM_LEVEL);
+    m_zoomTargetScale = pow(2, zoomLevel - MAX_MAP_ZOOM_LEVEL);
     m_zoomScaleDelta = (m_zoomTargetScale - currentScale()) / (ZOOM_FPS * ZOOM_TIME);
 
     startTimer(1000/ZOOM_FPS);