+void MapScene::setTilesGrid(QRect grid)
+{
+ qDebug() << __PRETTY_FUNCTION__ ;
+
+ m_viewTilesGrid = grid;
+}
+
+void MapScene::setZoomLevel(int zoomLevel)
+{
+ qDebug() << __PRETTY_FUNCTION__ ;
+
+ m_zoomLevel = zoomLevel;
+}
+
+void MapScene::spanItems(int zoomLevel, QPoint sceneCoordinate, QSize viewSize)
+{
+ qDebug() << __PRETTY_FUNCTION__;
+
+ // create rects for left and right side
+ QRect leftRect = sceneRect().toRect(); // this way we get the horizontal limits of the scene
+ leftRect.setTop(OSM_MAP_MIN_PIXEL_Y);
+ leftRect.setBottom(OSM_MAP_MAX_PIXEL_Y);
+ QRect rightRect = leftRect;
+
+ // calculate current horizontal area shown on the view
+ int viewSceneWidth = (1 << (OSM_MAX_ZOOM_LEVEL - zoomLevel)) * viewSize.width();
+ int viewSceneLeft = sceneCoordinate.x() - viewSceneWidth / 2;
+ int viewSceneRight = sceneCoordinate.x() + viewSceneWidth / 2;
+
+ // limit rects to include only area which really must be moved
+ leftRect.setRight(-1 - (OMS_MAP_PIXELS_X - 1 - viewSceneRight));
+ rightRect.setLeft(OMS_MAP_PIXELS_X + viewSceneLeft);
+
+ Q_ASSERT_X(leftRect.right() < viewSceneLeft, "spanning rect right value", "move rect is in the view area");
+ Q_ASSERT_X(rightRect.left() > viewSceneRight, "spanning rect left value", "move rect is in the view area");
+
+ // move all items which intersects the rects
+ if (leftRect.left() < leftRect.right())
+ moveIntersectingItemsHorizontally(leftRect, OMS_MAP_PIXELS_X);
+ if (rightRect.left() < rightRect.right())
+ moveIntersectingItemsHorizontally(rightRect, -OMS_MAP_PIXELS_X);
+}
+
+void MapScene::tilesSceneRectUpdated(QRect tilesSceneRect)