m_zoomLevel++;
emit zoomLevelChanged(m_zoomLevel);
+
+ setZValues();
+
/// @todo START FETCHING TILES
calculateTileGrid();
}
m_zoomLevel--;
emit zoomLevelChanged(m_zoomLevel);
+
+ setZValues();
+
/// @todo START FETCHING TILES
calculateTileGrid();
}
+
+void MapEngine::setZValues()
+{
+ //qDebug() << __PRETTY_FUNCTION__ << "m_zoomLevel:" << m_zoomLevel;
+
+ QList<QGraphicsItem *> items = m_mapScene->items();
+
+ for (int i = 0; i < items.size(); ++i) {
+ MapTile *item = dynamic_cast<MapTile *>(items.at(i));
+ if (item)
+ item->setSceneLevel(m_zoomLevel);
+ }
+
+}
*/
void parseURL(const QUrl &url, int &zoom, int &x, int &y);
+ /**
+ * @brief Set zValues for all tiles in the scene
+ *
+ * Drawing order of MapTiles, which has the zoom level higher than the current
+ * zoom level, is reversed and those MapTiles are mapped between lower level MapTiles.
+ * Example: If maximum zoom level is 18 and current view zoomlevel is 15, then
+ * the drawing order from top to bottom is 15, 16, 14, 17, 13, 18, 12, 11, 10, ...
+ */
+ void setZValues();
+
int tileMaxValue(int zoomLevel);
setScale(zoomFactor);
}
+void MapTile::setSceneLevel(int currentZoomLevel)
+{
+ if (currentZoomLevel < m_zoomLevel) {
+ /// @todo CHECK EQUATION
+ qreal aaa = static_cast<qreal>(MIN_MAP_SCENE_NORMAL_LEVEL + currentZoomLevel - (m_zoomLevel - currentZoomLevel)) + 0.5;
+ setZValue(aaa);
+ }
+ else
+ setZValue(static_cast<qreal>(MIN_MAP_SCENE_NORMAL_LEVEL + m_zoomLevel));
+
+// qDebug() << __PRETTY_FUNCTION__ << "Tile:" << m_tileNumber
+// << "m_zoomLevel" << m_zoomLevel
+// << "zValue:" << zValue();
+}
+
QPoint MapTile::tileNumber()
{
return m_tileNumber;
*/
void setZoomLevel(int zoomLevel);
+ void setSceneLevel(int currentZoomLevel);
+
/**
* @brief Getter for tile number
*