-#-------------------------------------------------
-#
+# -------------------------------------------------
# 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
MapEngine::MapEngine()
{
+
}
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);
}
private:
MapView *m_mapView;
MapScene *m_mapScene;
+
+ int m_zoomLevel;
};
#endif // MAPENGINE_H
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);
}
USA.
*/
+#include <math.h>
+
+#include <QDebug>
+#include <QTransform>
#include "maptile.h"
+#include "mapengine.h"
MapTile::MapTile()
{
void MapTile::setZoomLevel(quint8 zoomLevel)
{
m_zoomLevel = zoomLevel;
+
+ double zoomFactor = pow(2, (MapEngine::MAX_ZOOM_LEVEL - zoomLevel));
+ setScale(zoomFactor);
}
QPoint MapTile::tileNumber()
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());
+}
class MapView : public QGraphicsView
{
+ Q_OBJECT
public:
MapView(QWidget *parent = 0);
+ void setZoomLevel(int zoomLevel);
+
+public slots:
+ void mousePressEvent(QMouseEvent *event);
};
#endif // MAPVIEW_H
#include <QtGui>
#include "mainwindow.h"
+#include "../map/mapview.h"
+#include "../map/mapengine.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(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));
}