mapTilesInScene.insert(tilePath(zoom, x, y), mapTile);
m_mapScene->addMapTile(mapTile);
-// removeStackedTiles(mapTile);
+ removeStackedTiles(mapTile);
}
}
if (allTiles.contains(i.value()) && mapTilesInScene.contains(i.key())) {
MapTile *tile = i.value();
if (tile) {
- mapTilesInScene.remove(i.key());
- m_mapScene->removeItem(tile);
- delete tile;
+ mapTilesInScene.remove(i.key());
+ m_mapScene->removeItem(tile);
+ delete tile;
}
}
}
}
-void MapEngine::removeStackedTiles(MapTile *tile)
+void MapEngine::removeStackedTiles(MapTile *newTile)
{
- QList<QGraphicsItem *> collidingItems = tile->collidingItems(Qt::IntersectsItemBoundingRect);
-
- foreach (QGraphicsItem *item, collidingItems) {
- if (item != tile) {
- QRectF itemSceneRect = item->mapRectToScene(item->boundingRect());
- QList<QGraphicsItem *> stackedItems = m_mapScene->items(itemSceneRect, Qt::IntersectsItemBoundingRect);
-
- foreach(QGraphicsItem *stackedItem, stackedItems) {
- if (item != stackedItem) {
- MapTile *tmp = dynamic_cast<MapTile *>(item);
- if (tmp) {
- m_mapScene->removeItem(tmp);
- mapTilesInScene.remove(tilePath(tmp->zoomLevel(), tmp->x(), tmp->y()));
- }
- }
- }
+ QRectF newTileSceneRect = newTile->mapRectToScene(newTile->boundingRect());
+
+ QList<QGraphicsItem *> collidingItems = newTile->collidingItems(Qt::IntersectsItemBoundingRect);
+
+ foreach (QGraphicsItem *collidingItem, collidingItems) {
+
+ QRectF collidingItemSceneRect = collidingItem->mapRectToScene(collidingItem->boundingRect());
+
+ if (collidingItem->isObscured(collidingItemSceneRect)) {
+ qDebug() << "Hep";
}
+
}
+// qDebug() << "mapTilesInScene: " << mapTilesInScene.count();
+// qDebug() << "m_mapScene: " << m_mapScene->items().count();
}
void MapEngine::viewResized(const QSize &size)
* Iterate through tiles which are under this map tile and remove obscured
* tiles.
*
- * @param tile new tile covering old tiles
+ * @param newTile new tile covering old tiles
*/
- void removeStackedTiles(MapTile *tile);
+ void removeStackedTiles(MapTile *newTile);
/**
* @brief Check if center tile has changed.