Merge branch 'map' of https://vcs.maemo.org/git/situare into map
authorJussi Laitinen <jupe@l3l7588.ixonos.local>
Fri, 9 Apr 2010 12:44:44 +0000 (15:44 +0300)
committerJussi Laitinen <jupe@l3l7588.ixonos.local>
Fri, 9 Apr 2010 12:44:44 +0000 (15:44 +0300)
Conflicts:
src/map/mapengine.cpp

1  2 
src/map/mapengine.cpp
src/map/mapengine.h
src/ui/mapviewscreen.cpp

@@@ -43,26 -42,23 +43,24 @@@ MapEngine::MapEngine(QObject *parent
              SLOT(mapImageReceived(QUrl, QPixmap)));
  }
  
- void MapEngine::setViewLocation(QPointF latLonCoordinate)
+ void MapEngine::init()
  {
      emit zoomLevelChanged(m_zoomLevel);
+     setViewLocation(QPointF(25.5000, 65.0000));
 -    // Fetch some map tiles for demo purposes
 -    for (int x=9351; x<=9354; x++) {
 -        for (int y=4261; y<=4264; y++) {
 -            QUrl url = buildURL(m_zoomLevel, QPoint(x, y));
 -            m_mapFetcher->fetchMapImage(url);
 -        }
 -    }
++//    // Fetch some map tiles for demo purposes
++//    for (int x=9351; x<=9354; x++) {
++//        for (int y=4261; y<=4264; y++) {
++//            QUrl url = buildURL(m_zoomLevel, QPoint(x, y));
++//            m_mapFetcher->fetchMapImage(url);
++//        }
++//    }
+ }
  
-     /*/// Fetch some map tiles for demo purposes
-     for (int x=9348; x<=9357; x++) {
-         for (int y=4259; y<=4266; y++) {
-             QUrl url = buildURL(m_zoomLevel, QPoint(x, y));
-             m_mapFetcher->fetchMapImage(url);
-         }
-     }*/
-     QPoint tileCoord = convertLatLonToTile(m_zoomLevel, latLonCoordinate);
-     qDebug() << "Tile coord: " << tileCoord.x() << "," << tileCoord.y();
-     QPoint sceneCoord = convertTileNumberToSceneCoordinate(m_zoomLevel, tileCoord);
-     qDebug() << "Scene coord: " << sceneCoord.x() << "," << sceneCoord.y();
-     setLocation(sceneCoord);
-     qDebug() << "centerToScene: " << sceneCoord.x() << "," << sceneCoord.y();
-     //emit centerToSceneCoordinates(sceneCoord);
+ void MapEngine::setViewLocation(QPointF latLonCoordinate)
+ {
++    qDebug() << __PRETTY_FUNCTION__;
+     setLocation(convertLatLonToSceneCoordinate(latLonCoordinate));
  }
  
  QUrl MapEngine::buildURL(int zoomLevel, QPoint tileNumbers)
@@@ -101,19 -97,8 +99,20 @@@ void MapEngine::mapImageReceived(const 
      MapTile *mapTile = new MapTile();
      mapTile->setZoomLevel(zoom);
      mapTile->setTileNumber(QPoint(x, y));
 -    mapTile->setPixmap(pixmap);
 -    m_mapScene->addMapTile(mapTile);
 +    mapTile->setPixmap(pixmap); 
 +
 +    if (!mapTilesInScene.contains(url.toString())) {
 +        mapTilesInScene.insert(url.toString(), mapTile);
 +        m_mapScene->addMapTile(mapTile);
 +
 +        qDebug() << "Tile count: " << mapTilesInScene.size();
 +    }
 +
++    //TODO Remove tiles from scene
 +    /*if (mapTilesInScene.size() > 20) {
 +        MapTile * tile = mapTilesInScene.take(url.toString());
 +        m_mapScene->removeItem(tile);
 +    }*/
  }
  
  QGraphicsScene* MapEngine::scene()
@@@ -115,11 -114,9 +124,11 @@@ public
          qreal y = static_cast<qreal>((1.0 - log(tan(latitude * M_PI / 180.0) + 1.0
                                      / cos(latitude * M_PI / 180.0)) / M_PI) / 2.0);
  
-         return QPoint(qFloor(x*z), qFloor(y*z));
+         return QPointF(x*z*TILE_SIZE_X, y*z*TILE_SIZE_Y);
      }
  
 +    QRect calculateGrid(QPointF sceneCoordinate);
 +
  private:
      /**
      * @brief Build URL for donwloading single map tile from OpenStreetMap tile server
  MapViewScreen::MapViewScreen(QWidget *parent)
     : QWidget(parent)
  {
-       MapView *mapView = new MapView(this);
-    MapEngine *mapEngine = new MapEngine(this);
-    mapView->setScene(mapEngine->scene());
++    MapView *mapView = new MapView(this);
++    mapEngine = new MapEngine(this);
++    mapView->setScene(mapEngine->scene());
  
-    connect(mapView, SIGNAL(viewScrolled(QPointF)), mapEngine, SLOT(setLocation(QPointF)));
-    connect(mapEngine, SIGNAL(locationChanged(QPointF)),
 -   MapView *mapView = new MapView(this);
 -   MapEngine *mapEngine = new MapEngine(this);
 -   mapView->setScene(mapEngine->scene());
 -
 -   connect(mapView, SIGNAL(viewScrolled(QPointF)), mapEngine, SLOT(setLocation(QPointF)));
 -   connect(mapEngine, SIGNAL(locationChanged(QPointF)),
++    connect(mapView, SIGNAL(viewScrolled(QPointF)), mapEngine, SLOT(setLocation(QPointF)));
++    connect(mapEngine, SIGNAL(locationChanged(QPointF)),
             mapView, SLOT(centerToSceneCoordinates(QPointF)));
--   connect(mapEngine, SIGNAL(zoomLevelChanged(int)), mapView, SLOT(setZoomLevel(int)));
++    connect(mapEngine, SIGNAL(zoomLevelChanged(int)), mapView, SLOT(setZoomLevel(int)));
 +
-    QHBoxLayout *mapViewLayout = new QHBoxLayout;
-    //DEBUG
-    QVBoxLayout *mapControlLayout = new QVBoxLayout;
-    QWidget *mapControl = new QWidget(this);
-    mapControl->setLayout(mapControlLayout);
-    search = new QPushButton("Search", this);
-    zoomOut = new QPushButton("-", this);
-    zoomIn = new QPushButton("+", this);
-    mapControlLayout->addWidget(&latLine);
-    mapControlLayout->addWidget(&lonLine);
-    mapControlLayout->addWidget(search);
-    mapControlLayout->addWidget(zoomIn);
-    mapControlLayout->addWidget(zoomOut);
-    mapViewLayout->addWidget(mapControl);
-    connect(search, SIGNAL(clicked()), this, SLOT(searchMap()));
-    connect(zoomIn, SIGNAL(clicked()), this, SLOT(zoomInMap()));
-    connect(zoomOut, SIGNAL(clicked()), this, SLOT(zoomOutMap()));
-    //DEBUG
-    mapViewLayout->addWidget(mapView);
-    setLayout(mapViewLayout);
++    QHBoxLayout *mapViewLayout = new QHBoxLayout;
++    //DEBUG
++    QVBoxLayout *mapControlLayout = new QVBoxLayout;
++    QWidget *mapControl = new QWidget(this);
++    mapControl->setLayout(mapControlLayout);
++    search = new QPushButton("Search", this);
++    zoomOut = new QPushButton("-", this);
++    zoomIn = new QPushButton("+", this);
++    mapControlLayout->addWidget(&latLine);
++    mapControlLayout->addWidget(&lonLine);
++    mapControlLayout->addWidget(search);
++    mapControlLayout->addWidget(zoomIn);
++    mapControlLayout->addWidget(zoomOut);
++    mapViewLayout->addWidget(mapControl);
++    connect(search, SIGNAL(clicked()), this, SLOT(searchMap()));
++    connect(zoomIn, SIGNAL(clicked()), this, SLOT(zoomInMap()));
++    connect(zoomOut, SIGNAL(clicked()), this, SLOT(zoomOutMap()));
++    //DEBUG
++    mapViewLayout->addWidget(mapView);
++    setLayout(mapViewLayout);
 +
-    mapEngine->setViewLocation(QPointF(25.5000, 65.0000));
++    mapEngine->init();
 +}
 +
 +void MapViewScreen::searchMap()
 +{
 +    qreal lat = latLine.text().toFloat();
 +    qreal lon = lonLine.text().toFloat();
  
 -   QHBoxLayout *mapViewLayout = new QHBoxLayout;
 -   mapViewLayout->addWidget(mapView);
 -   setLayout(mapViewLayout);
 +    qDebug() << lat << "," << lon;
  
 -   mapEngine->init();
 +    mapEngine->setViewLocation(QPointF(lon, lat));
 +}
 +
 +void MapViewScreen::zoomInMap()
 +{
 +    //mapEngine->zoomLevelChanged();
 +}
 +
 +void MapViewScreen::zoomOutMap()
 +{
 +    //mapEngine->zoomLevelChanged();
  }