Integrated map view to ui, some modifications to map classes
authorSami Rämö <sami.ramo@ixonos.com>
Tue, 30 Mar 2010 12:08:56 +0000 (15:08 +0300)
committerSami Rämö <sami.ramo@ixonos.com>
Tue, 30 Mar 2010 12:08:56 +0000 (15:08 +0300)
Situare.pro
src/map/mapengine.cpp
src/map/mapengine.h
src/map/mapscene.cpp
src/map/maptile.cpp
src/map/mapview.cpp
src/map/mapview.h
src/ui/mainwindow.cpp

index 26f1ef4..3102903 100644 (file)
@@ -1,14 +1,16 @@
-#-------------------------------------------------
-#
+# -------------------------------------------------
 # Project created by QtCreator 2010-03-26T07:57:35
-#
-#-------------------------------------------------
-
+# -------------------------------------------------
 TARGET = Situare
 TEMPLATE = app
-
-
-SOURCES += src/main.cpp\
-        src/ui/mainwindow.cpp
-
-HEADERS  += src/ui/mainwindow.h
+SOURCES += src/main.cpp \
+    src/ui/mainwindow.cpp \
+    src/map/mapengine.cpp \
+    src/map/mapview.cpp \
+    src/map/mapscene.cpp \
+    src/map/maptile.cpp
+HEADERS += src/ui/mainwindow.h \
+    src/map/mapengine.h \
+    src/map/mapview.h \
+    src/map/mapscene.h \
+    src/map/maptile.h
index 5b2c036..e545c59 100644 (file)
@@ -28,6 +28,7 @@
 
 MapEngine::MapEngine()
 {
+
 }
 
 MapEngine::MapEngine(MapView *mapView)
@@ -35,23 +36,24 @@ MapEngine::MapEngine(MapView *mapView)
     m_mapView = mapView;
     m_mapScene = new MapScene();
     mapView->setScene(m_mapScene);
+    m_zoomLevel = 14;
 }
 
 void MapEngine::setViewLocation(QPointF latLonCoordinate)
 {
+    m_mapView->setZoomLevel(m_zoomLevel);
+
     /*
      * Add some dummy map tiles for demo purposes
      */
 
-    for (int x=4261; x<=4264; x++) {
-        for (int y=9352; y<=9353; y++) {
+    for (int x=9351; x<=9354; x++) {
+        for (int y=4261; y<=4264; y++) {
             MapTile *mapTile = new MapTile();
-            mapTile->setZoomLevel(14);
+            mapTile->setZoomLevel(m_zoomLevel);
             mapTile->setTileNumber(QPoint(x, y));
-            QString fileName = QString("../../../res/images/test_map_tiles/%1_%2_%3.png").arg(mapTile->zoomLevel()).arg(y).arg(x);
-            //QString fileName = QString("/home/ramosam-local/situare/res/images/test_map_tiles/%1_%2_%3.png").arg(mapTile->zoomLevel()).arg(y).arg(x);
-            //QString fileName = QString("/home/ramosam-local/situare/res/images/test_map_tiles/14_9352_4261.png");
-            qDebug() << __PRETTY_FUNCTION__ << "fileName:" << fileName;
+            QString fileName = QString("res/images/test_map_tiles/%1_%2_%3.png").arg(mapTile->zoomLevel()).arg(x).arg(y);
+//            qDebug() << __PRETTY_FUNCTION__ << "fileName:" << fileName;
             mapTile->setPixmap(QPixmap(fileName));
             m_mapScene->addMapTile(mapTile);
         }
index 70d7fed..882bd2e 100644 (file)
@@ -51,6 +51,8 @@ public:
 private:
     MapView *m_mapView;
     MapScene *m_mapScene;
+
+    int m_zoomLevel;
 };
 
 #endif // MAPENGINE_H
index 09e663f..e0203f6 100644 (file)
@@ -31,9 +31,9 @@ MapScene::MapScene(QObject *parent) : QGraphicsScene(parent)
 
 void MapScene::addMapTile(MapTile *mapTile)
 {
-    mapTile->setOffset(MapEngine::convertTileNumberToSceneCoordinate(mapTile->zoomLevel(), mapTile->tileNumber()));
-    qDebug() << __PRETTY_FUNCTION__ << "offset" << mapTile->offset();
+    /// \todo Study why offset must not be scaled with zoom level
+    mapTile->setOffset(MapEngine::convertTileNumberToSceneCoordinate(MapEngine::MAX_ZOOM_LEVEL, mapTile->tileNumber()));
+//    qDebug() << __PRETTY_FUNCTION__ << "offset" << mapTile->offset();
 
-    /// \todo set map tile strechh with mapTile->setTransform();
     addItem(mapTile);
 }
index 8232075..f2f1e05 100644 (file)
     USA.
  */
 
+#include <math.h>
+
+#include <QDebug>
+#include <QTransform>
 
 #include "maptile.h"
+#include "mapengine.h"
 
 MapTile::MapTile()
 {
@@ -35,6 +40,9 @@ quint8 MapTile::zoomLevel()
 void MapTile::setZoomLevel(quint8 zoomLevel)
 {
     m_zoomLevel = zoomLevel;
+
+    double zoomFactor = pow(2, (MapEngine::MAX_ZOOM_LEVEL - zoomLevel));
+    setScale(zoomFactor);
 }
 
 QPoint MapTile::tileNumber()
index 7da7ef7..24c14ee 100644 (file)
     USA.
  */
 
+#include <math.h>
+
+#include <QDebug>
+#include <QMouseEvent>
 
 #include "mapview.h"
+#include "mapengine.h"
 
 MapView::MapView(QWidget *parent) : QGraphicsView(parent)
 {
     setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
     setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
 }
+
+void MapView::setZoomLevel(int zoomLevel)
+{
+    double scaleFactor = pow(2, zoomLevel - MapEngine::MAX_ZOOM_LEVEL);
+    scale(scaleFactor, scaleFactor);
+}
+
+void MapView::mousePressEvent(QMouseEvent *event)
+{
+    qDebug() << __PRETTY_FUNCTION__ << "scene coordinate:" << mapToScene(event->pos());
+}
index 2a2eb36..aa57005 100644 (file)
 
 class MapView : public QGraphicsView
 {
+    Q_OBJECT
 public:
     MapView(QWidget *parent = 0);
+    void setZoomLevel(int zoomLevel);
+
+public slots:
+    void mousePressEvent(QMouseEvent *event);
 };
 
 #endif // MAPVIEW_H
index 882b082..a328edc 100644 (file)
@@ -22,6 +22,8 @@
 
 #include <QtGui>
 #include "mainwindow.h"
+#include "../map/mapview.h"
+#include "../map/mapengine.h"
 
 MainWindow::MainWindow(QWidget *parent)
     : QMainWindow(parent)
@@ -73,8 +75,11 @@ SituareListView::SituareListView(QWidget *parent)
 SituareMapView::SituareMapView(QWidget *parent)
     : QWidget(parent)
 {
-    QPushButton *mapViewButton = new QPushButton(tr("THIS IS MAPVIEEEEEW!"));
     QHBoxLayout *mapViewLayout = new QHBoxLayout;
-    mapViewLayout->addWidget(mapViewButton);
+
+    MapView *mapView = new MapView(this);
+    mapViewLayout->addWidget(mapView);
     setLayout(mapViewLayout);
+    MapEngine *mapEngine = new MapEngine(mapView);
+    mapEngine->setViewLocation(QPointF(25.5000, 65.0000));
 }