Fixed MapTile::setPosition() x-value check
authorSami Rämö <sami.ramo@ixonos.com>
Thu, 10 Jun 2010 13:04:03 +0000 (16:04 +0300)
committerSami Rämö <sami.ramo@ixonos.com>
Thu, 10 Jun 2010 13:04:03 +0000 (16:04 +0300)
src/map/maptile.cpp

index 8295f78..ca8c7ae 100644 (file)
@@ -88,11 +88,13 @@ void MapTile::setPosition()
 {
     qDebug() << __PRETTY_FUNCTION__;
 
-    const int maxTileNumber = (1 << m_zoomLevel) - 1;
+    const int MAX_TILE_NUMBER = MapEngine::tileMaxValue(m_zoomLevel);
+    const int MIN_TILE_NUMBER_X = -(MAX_TILE_NUMBER + 1) / 2;
+    const int MAX_TULE_NUMBER_X = MAX_TILE_NUMBER * 1.5 + 1;
 
     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))
+        && (m_tileNumber.x() >= MIN_TILE_NUMBER_X) && (m_tileNumber.x() <= MAX_TULE_NUMBER_X)
+        && (m_tileNumber.y() >= 0) && (m_tileNumber.y() <= MAX_TILE_NUMBER))
 
         setPos(MapEngine::convertTileNumberToSceneCoordinate(m_zoomLevel, m_tileNumber));
     else