, m_isRemoveStackedTilesRunning(false)
, m_viewRect(QRect(0, 0, 0, 0))
{
+ qDebug() << __PRETTY_FUNCTION__;
+
const int maxTilesPerSide = (1 << MAX_MAP_ZOOM_LEVEL);
const int maxPixelsX = maxTilesPerSide * TILE_SIZE_X;
const int maxPixelsY = maxTilesPerSide * TILE_SIZE_Y;
void MapScene::addTile(MapTile *mapTile, QString hashKey)
{
+ qDebug() << __PRETTY_FUNCTION__;
+
m_mapTilesInScene.insert(hashKey, mapTile);
addItem(mapTile);
}
-void MapScene::debugItemsCount()
-{
-#ifndef Q_WS_MAEMO_5
- qDebug() << __PRETTY_FUNCTION__ << "ITEM ADDED:" << items().count();
-#endif // Q_WS_MAEMO_5
-}
-
void MapScene::enqueueRemoveStackedTiles(MapTile *newTile)
{
qDebug() << __PRETTY_FUNCTION__;
bool MapScene::isTileInScene(QString hashKey)
{
+ qDebug() << __PRETTY_FUNCTION__;
+
return m_mapTilesInScene.contains(hashKey);
}
}
// schedule removal of the next tile if the list is not empty
- if (!m_removeStackedTilesList.isEmpty()) {
+ if (!m_removeStackedTilesList.isEmpty())
QTimer::singleShot(0, this, SLOT(runNextStackedTilesRemoval()));
- }
- else {
+ else
m_isRemoveStackedTilesRunning = false;
-#ifndef Q_WS_MAEMO_5
- qDebug() << __PRETTY_FUNCTION__ << "STACKED END:" << items().count();
-#endif // Q_WS_MAEMO_5
- }
}
void MapScene::removeOutOfViewTiles()
QList<QGraphicsItem *> viewTiles = items(m_viewRect, Qt::IntersectsItemBoundingRect);
QList<QGraphicsItem *> allTiles = items();
-#ifndef Q_WS_MAEMO_5
- qDebug() << __PRETTY_FUNCTION__ << "OUT OF VIEW START:" << items().count();
-#endif // Q_WS_MAEMO_5
-
-
- qDebug() << __PRETTY_FUNCTION__ << "All tiles:" << allTiles.count();
- qDebug() << __PRETTY_FUNCTION__ << "Tiles in view area:" << viewTiles.count();
-
//Remove tiles which are in view from allTiles
foreach (QGraphicsItem *tile, viewTiles)
allTiles.removeOne(tile);
-
//Remove tiles out of view
foreach (QGraphicsItem *tile, allTiles) {
MapTile *tileToRemove = dynamic_cast<MapTile *>(tile);
if (tileToRemove)
removeTile(tileToRemove);
}
-
-#ifndef Q_WS_MAEMO_5
- qDebug() << __PRETTY_FUNCTION__ << "OUT OF VIEW END:" << items().count();
-#endif // Q_WS_MAEMO_5
-
}
void MapScene::removeStackedTiles(MapTile *newTile)
foreach (QGraphicsItem *collidingItem, collidingItems) {
MapTile *collidingTile = dynamic_cast<MapTile *>(collidingItem);
if (collidingTile) {
- // remove tile if it is fully obscured by new tile
- QRectF collidingTileSceneRect = collidingTile->sceneBoundingRect();
- if (newTileSceneRect.contains(collidingTileSceneRect))
- removeTile(collidingTile);
+ if (newTile->zValue() > collidingTile->zValue()) {
+ // remove tile if it is fully obscured by new tile
+ QRectF collidingTileSceneRect = collidingTile->sceneBoundingRect();
+ if (newTileSceneRect.contains(collidingTileSceneRect))
+ removeTile(collidingTile);
+ }
}
}
}
{
qDebug() << __PRETTY_FUNCTION__;
- if (tile) {
- m_mapTilesInScene.remove(MapEngine::tilePath(tile->zoomLevel(),
- tile->tileNumber().x(),
- tile->tileNumber().y()));
- removeItem(tile);
- m_removeStackedTilesList.removeAll(tile);
- delete tile;
- }
+ m_mapTilesInScene.remove(MapEngine::tilePath(tile->zoomLevel(),
+ tile->tileNumber().x(),
+ tile->tileNumber().y()));
+ removeItem(tile);
+ m_removeStackedTilesList.removeAll(tile);
+ delete tile;
}
void MapScene::setTilesDrawingLevels(int zoomLevel)
void MapScene::viewRectUpdated(QRect viewRect)
{
+ qDebug() << __PRETTY_FUNCTION__;
+
m_viewRect = viewRect;
}