diff options
author | Juha Vuolle <juha.vuolle@nokia.com> | 2011-11-03 12:08:11 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-11-03 04:17:17 +0100 |
commit | e777a50c6ee5485a00b800adc3e00e337e65e187 (patch) | |
tree | 73bb10af9615ebeb85db7b85c3b5af6867533b2b /src | |
parent | 1518f534167c63de130d01b93f885088d285986e (diff) | |
download | qtlocation-e777a50c6ee5485a00b800adc3e00e337e65e187.tar.gz |
Map QML autotests and improvements part 2/2.
Map uses mapcontroller now.
Change-Id: I4249408e4473455fca2634d8150cec00563ad015
Reviewed-by: David Laing <david.laing@nokia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/imports/location/qdeclarativegeomap.cpp | 188 | ||||
-rw-r--r-- | src/imports/location/qdeclarativegeomap_p.h | 21 | ||||
-rw-r--r-- | src/imports/location/qdeclarativegeomapflickable.cpp | 43 | ||||
-rw-r--r-- | src/imports/location/qdeclarativegeomapmousearea.cpp | 3 | ||||
-rw-r--r-- | src/imports/location/qdeclarativegeomappincharea.cpp | 20 | ||||
-rw-r--r-- | src/location/mapsgl/mapcontroller.cpp | 3 | ||||
-rw-r--r-- | src/location/mapsgl/mapcontroller.h | 2 |
7 files changed, 153 insertions, 127 deletions
diff --git a/src/imports/location/qdeclarativegeomap.cpp b/src/imports/location/qdeclarativegeomap.cpp index 6e0d4a2b..42993efb 100644 --- a/src/imports/location/qdeclarativegeomap.cpp +++ b/src/imports/location/qdeclarativegeomap.cpp @@ -112,6 +112,7 @@ QDeclarativeGeoMap::QDeclarativeGeoMap(QQuickItem *parent) mappingManager_(0), zoomLevel_(8.0), bearing_(0.0), + tilt_(0.0), center_(0), // mapType_(NoMap), componentCompleted_(false), @@ -269,6 +270,7 @@ void QDeclarativeGeoMap::geometryChanged(const QRectF &newGeometry, const QRectF QQuickItem::geometryChanged(newGeometry, oldGeometry); } +// Note: this keyboard handling is for development purposes only void QDeclarativeGeoMap::keyPressEvent(QKeyEvent *e) { if (!mappingManagerInitialized_) @@ -374,22 +376,6 @@ void QDeclarativeGeoMap::paint(QPainter* p) restoreDefaults(&painter); } -void QDeclarativeGeoMap::setCameraData(const CameraData &camera) -{ - if (!mappingManagerInitialized_) - return; - map_->setCameraData(camera); - if (!map_->autoUpdate()) - map_->update(); -} - -CameraData QDeclarativeGeoMap::cameraData() const -{ - if (!mappingManagerInitialized_) - return CameraData(); - return map_->cameraData(); -} - void QDeclarativeGeoMap::restoreDefaults(QGLPainter *painter) { // Disable the effect to return control to the GL paint engine. @@ -503,17 +489,31 @@ void QDeclarativeGeoMap::mappingManagerInitialized() SIGNAL(updateRequired()), this, SLOT(update())); - connect(map_, - SIGNAL(cameraDataChanged(CameraData)), + connect(map_->mapController(), + SIGNAL(centerChanged(AnimatableCoordinate)), this, - SLOT(cameraDataChanged(CameraData))); + SLOT(mapCenterChanged(AnimatableCoordinate))); + connect(map_->mapController(), + SIGNAL(bearingChanged(qreal)), + this, + SLOT(mapBearingChanged(qreal))); + connect(map_->mapController(), + SIGNAL(tiltChanged(qreal)), + this, + SLOT(mapTiltChanged(qreal))); + connect(map_->mapController(), + SIGNAL(zoomChanged(qreal)), + this, + SLOT(mapZoomLevelChanged(qreal))); + map_->setMappingManager(mappingManager_); map_->resize(width(), height()); - CameraData cameraData = map_->cameraData(); - cameraData.setCenter(center()->coordinate()); - cameraData.setZoomFactor(zoomLevel_); - cameraData.setBearing(bearing_); - map_->setCameraData(cameraData); + AnimatableCoordinate acenter = map_->mapController()->center(); + acenter.setCoordinate(center()->coordinate()); + map_->mapController()->setCenter(acenter); + map_->mapController()->setZoom(zoomLevel_); + map_->mapController()->setBearing(bearing_); + map_->mapController()->setTilt(tilt_); map_->update(); emit minimumZoomLevelChanged(); emit maximumZoomLevelChanged(); @@ -574,11 +574,8 @@ void QDeclarativeGeoMap::setBearing(qreal bearing) if (!clockwise) bearing = (-1.0 * bearing) + 360; bearing_ = bearing + fractions; - if (mappingManagerInitialized_) { - CameraData cameraData = map_->cameraData(); - cameraData.setBearing(bearing_); - map_->setCameraData(cameraData); - } + if (mappingManagerInitialized_) + map_->mapController()->setBearing(bearing_); emit bearingChanged(bearing_); } @@ -603,15 +600,31 @@ void QDeclarativeGeoMap::setBearing(qreal bearing) qreal QDeclarativeGeoMap::bearing() const { if (mappingManagerInitialized_) { - if (map_->cameraData().bearing() >= 0) - return map_->cameraData().bearing(); + if (map_->mapController()->bearing() >= 0) + return map_->mapController()->bearing(); else - return map_->cameraData().bearing() + 360; + return map_->mapController()->bearing() + 360; } else { return bearing_; } } +void QDeclarativeGeoMap::setTilt(qreal tilt) +{ + if (tilt_ == tilt || tilt > 85.0 || tilt < 0) + return; + tilt_ = tilt; + if (mappingManagerInitialized_) + map_->mapController()->setTilt(tilt); + emit tiltChanged(tilt); +} + +qreal QDeclarativeGeoMap::tilt() const +{ + if (!mappingManagerInitialized_) + return tilt_; + return map_->mapController()->tilt(); +} /*! \qmlproperty qreal Map::zoomLevel @@ -631,18 +644,15 @@ void QDeclarativeGeoMap::setZoomLevel(qreal zoomLevel) return; } zoomLevel_ = zoomLevel; - if (mappingManagerInitialized_) { - CameraData cameraData = map_->cameraData(); - cameraData.setZoomFactor(zoomLevel_); - map_->setCameraData(cameraData); - } + if (mappingManagerInitialized_) + map_->mapController()->setZoom(zoomLevel_); emit zoomLevelChanged(zoomLevel); } qreal QDeclarativeGeoMap::zoomLevel() const { if (mappingManagerInitialized_) - return map_->cameraData().zoomFactor(); + return map_->mapController()->zoom(); else return zoomLevel_; } @@ -676,9 +686,9 @@ void QDeclarativeGeoMap::setCenter(QDeclarativeCoordinate *center) this, SLOT(centerAltitudeChanged(double))); if (center_->coordinate().isValid() && mappingManagerInitialized_) { - CameraData cameraData = map_->cameraData(); - cameraData.setCenter(center_->coordinate()); - map_->setCameraData(cameraData); + AnimatableCoordinate acoord = map_->mapController()->center(); + acoord.setCoordinate(center_->coordinate()); + map_->mapController()->setCenter(acoord); update(); } } @@ -689,7 +699,7 @@ QDeclarativeCoordinate* QDeclarativeGeoMap::center() { if (!center_) { if (mappingManagerInitialized_) - center_ = new QDeclarativeCoordinate(map_->cameraData().center()); + center_ = new QDeclarativeCoordinate(map_->mapController()->center().coordinate()); else center_ = new QDeclarativeCoordinate(QGeoCoordinate(0,0,0)); connect(center_, @@ -708,24 +718,37 @@ QDeclarativeCoordinate* QDeclarativeGeoMap::center() return center_; } -void QDeclarativeGeoMap::cameraDataChanged(const CameraData &cameraData) +void QDeclarativeGeoMap::mapZoomLevelChanged(qreal zoom) +{ + if (zoom == zoomLevel_) + return; + zoomLevel_ = zoom; + emit zoomLevelChanged(zoomLevel_); +} + +void QDeclarativeGeoMap::mapTiltChanged(qreal tilt) +{ + if (tilt == zoomLevel_) + return; + tilt_ = tilt; + emit tiltChanged(tilt_); +} + +void QDeclarativeGeoMap::mapBearingChanged(qreal bearing) { - if (!componentCompleted_) + if (bearing == bearing_) return; - // check what has changed and emit appropriate signals - if (cameraData.center() != center()->coordinate()) { - QDeclarativeCoordinate* currentCenter = center(); - currentCenter->setCoordinate(cameraData.center()); + bearing_ = bearing; + emit bearingChanged(bearing_); +} + +void QDeclarativeGeoMap::mapCenterChanged(AnimatableCoordinate center) +{ + if (center.coordinate() != this->center()->coordinate()) { + QDeclarativeCoordinate* currentCenter = this->center(); + currentCenter->setCoordinate(center.coordinate()); emit centerChanged(currentCenter); } - if (cameraData.zoomFactor() != zoomLevel_) { - zoomLevel_ = cameraData.zoomFactor(); - emit zoomLevelChanged(zoomLevel_); - } - if (cameraData.bearing() != bearing_) { - bearing_ = cameraData.bearing(); - emit bearingChanged(bearing_); - } } void QDeclarativeGeoMap::centerLatitudeChanged(double latitude) @@ -733,14 +756,18 @@ void QDeclarativeGeoMap::centerLatitudeChanged(double latitude) if (qIsNaN(latitude)) return; if (mappingManagerInitialized_) { - CameraData cameraData = map_->cameraData(); - QGeoCoordinate coord = cameraData.center(); + AnimatableCoordinate acoord = map_->mapController()->center(); + QGeoCoordinate coord = acoord.coordinate(); + // if the change originated from app, emit (other changes via mapctrl signals) + if (latitude != coord.latitude()) + emit centerChanged(center_); coord.setLatitude(latitude); - cameraData.setCenter(coord); - map_->setCameraData(cameraData); + acoord.setCoordinate(coord); + map_->mapController()->setCenter(acoord); update(); + } else { + emit centerChanged(center_); } - emit centerChanged(center_); } void QDeclarativeGeoMap::centerLongitudeChanged(double longitude) @@ -748,14 +775,18 @@ void QDeclarativeGeoMap::centerLongitudeChanged(double longitude) if (qIsNaN(longitude)) return; if (mappingManagerInitialized_) { - CameraData cameraData = map_->cameraData(); - QGeoCoordinate coord = cameraData.center(); + AnimatableCoordinate acoord = map_->mapController()->center(); + QGeoCoordinate coord = acoord.coordinate(); + // if the change originated from app, emit (other changes via mapctrl signals) + if (longitude != coord.longitude()) + emit centerChanged(center_); coord.setLongitude(longitude); - cameraData.setCenter(coord); - map_->setCameraData(cameraData); + acoord.setCoordinate(coord); + map_->mapController()->setCenter(acoord); update(); + } else { + emit centerChanged(center_); } - emit centerChanged(center_); } void QDeclarativeGeoMap::centerAltitudeChanged(double altitude) @@ -763,14 +794,18 @@ void QDeclarativeGeoMap::centerAltitudeChanged(double altitude) if (qIsNaN(altitude)) return; if (mappingManagerInitialized_) { - CameraData cameraData = map_->cameraData(); - QGeoCoordinate coord = cameraData.center(); + AnimatableCoordinate acoord = map_->mapController()->center(); + QGeoCoordinate coord = acoord.coordinate(); + // if the change originated from app, emit (other changes via mapctrl signals) + if (altitude != coord.altitude()) + emit centerChanged(center_); coord.setAltitude(altitude); - cameraData.setCenter(coord); - map_->setCameraData(cameraData); + acoord.setCoordinate(coord); + map_->mapController()->setCenter(acoord); update(); + } else { + emit centerChanged(center_); } - emit centerChanged(center_); } /*! @@ -856,9 +891,9 @@ QPointF QDeclarativeGeoMap::toScreenPosition(QDeclarativeCoordinate* coordinate) void QDeclarativeGeoMap::pan(int dx, int dy) { - Q_UNUSED(dx); - Q_UNUSED(dy); - qWarning() << __FUNCTION__ << " of Map not implemented."; // TODO + if (!mappingManagerInitialized_) + return; + map_->mapController()->pan(dx, dy); } void QDeclarativeGeoMap::touchEvent(QTouchEvent *event) @@ -1035,11 +1070,6 @@ void QDeclarativeGeoMap::mouseMoveEvent(QMouseEvent *event) event->ignore(); } -void QDeclarativeGeoMap::internalCenterChanged(const QGeoCoordinate &coordinate) -{ - emit centerChanged(new QDeclarativeCoordinate(coordinate, this)); -} - //void QDeclarativeGeoMap::internalMapTypeChanged(QGraphicsGeoMap::MapType mapType) //{ // emit mapTypeChanged(QDeclarativeGeoMap::MapType(mapType)); diff --git a/src/imports/location/qdeclarativegeomap_p.h b/src/imports/location/qdeclarativegeomap_p.h index 26b54bc5..af1b669d 100644 --- a/src/imports/location/qdeclarativegeomap_p.h +++ b/src/imports/location/qdeclarativegeomap_p.h @@ -54,6 +54,7 @@ #include "qdeclarativegeomapitemview_p.h" #include "qdeclarativegeomapflickable_p.h" #include "qdeclarativegeomappincharea_p.h" +#include "mapcontroller.h" //#define QT_DECLARATIVE_LOCATION_TRACE 1 @@ -99,9 +100,11 @@ class QDeclarativeGeoMap : public QQuickPaintedItem Q_PROPERTY(qreal minimumZoomLevel READ minimumZoomLevel NOTIFY minimumZoomLevelChanged) Q_PROPERTY(qreal maximumZoomLevel READ maximumZoomLevel NOTIFY maximumZoomLevelChanged) Q_PROPERTY(qreal zoomLevel READ zoomLevel WRITE setZoomLevel NOTIFY zoomLevelChanged) - Q_PROPERTY(qreal bearing READ bearing WRITE setBearing NOTIFY bearingChanged) // Q_PROPERTY(MapType mapType READ mapType WRITE setMapType NOTIFY mapTypeChanged) Q_PROPERTY(QDeclarativeCoordinate* center READ center WRITE setCenter NOTIFY centerChanged) + // Tilt and bearing are not part of supported API + Q_PROPERTY(qreal tilt READ tilt WRITE setTilt NOTIFY tiltChanged) + Q_PROPERTY(qreal bearing READ bearing WRITE setBearing NOTIFY bearingChanged) Q_INTERFACES(QDeclarativeParserStatus) //public: @@ -142,6 +145,9 @@ public: void setBearing(qreal bearing); qreal bearing() const; + void setTilt(qreal tilt); + qreal tilt() const; + void setCenter(QDeclarativeCoordinate *center); QDeclarativeCoordinate* center(); @@ -166,9 +172,6 @@ public: QDeclarativeGeoMapPinchArea* pinch() {return pinchArea_;} - // Internal - Map* map() {return map_;} - public Q_SLOTS: void pan(int dx, int dy); @@ -187,6 +190,7 @@ Q_SIGNALS: void pluginChanged(QDeclarativeGeoServiceProvider *plugin); void zoomLevelChanged(qreal zoomLevel); void bearingChanged(qreal bearing); + void tiltChanged(qreal tilt); void centerChanged(const QDeclarativeCoordinate *coordinate); void minimumZoomLevelChanged(); void maximumZoomLevelChanged(); @@ -194,14 +198,16 @@ Q_SIGNALS: private Q_SLOTS: void updateMapDisplay(const QRectF& target); - void internalCenterChanged(const QGeoCoordinate &coordinate); // void internalMapTypeChanged(QGraphicsGeoMap::MapType mapType); void centerLatitudeChanged(double latitude); void centerLongitudeChanged(double longitude); void centerAltitudeChanged(double altitude); void mapItemDestroyed(QObject* item); - void cameraDataChanged(const CameraData &cameraData); void mappingManagerInitialized(); + void mapZoomLevelChanged(qreal zoom); + void mapTiltChanged(qreal tilt); + void mapBearingChanged(qreal bearing); + void mapCenterChanged(AnimatableCoordinate center); private: void setupMapView(QDeclarativeGeoMapItemView *view); @@ -218,6 +224,7 @@ private: qreal zoomLevel_; qreal bearing_; + qreal tilt_; QPointer<QDeclarativeCoordinate> center_; // QDeclarativeGeoMap::MapType mapType_; @@ -240,8 +247,6 @@ private: int touchTimer_; TileCache *tileCache_; - void setCameraData(const CameraData &camera); - CameraData cameraData() const; Map *map_; QList<QDeclarativeGeoMapItem*> mapItems_; QList<QDeclarativeGeoMapItem*> mapItemsPending_; diff --git a/src/imports/location/qdeclarativegeomapflickable.cpp b/src/imports/location/qdeclarativegeomapflickable.cpp index cb97e45b..110bcdbe 100644 --- a/src/imports/location/qdeclarativegeomapflickable.cpp +++ b/src/imports/location/qdeclarativegeomapflickable.cpp @@ -44,6 +44,7 @@ #include <QPropertyAnimation> #include <QEasingCurve> #include "qdeclarativegeomapflickable_p.h" +#include "mapcontroller.h" #include <QTimer> #include "map.h" #include "math.h" @@ -161,7 +162,7 @@ void QDeclarativeGeoMapFlickable::setMap(Map* map) if (map_ || !map) return; map_ = map; - animation_ = new QPropertyAnimation(map_, "camera", this); + animation_ = new QPropertyAnimation(map_->mapController(), "center", this); animation_->setEasingCurve(QEasingCurve(QEasingCurve::OutQuad)); connect(animation_, SIGNAL(finished()), this, SLOT(flickAnimationFinished())); } @@ -259,37 +260,35 @@ bool QDeclarativeGeoMapFlickable::mouseMoveEvent(QMouseEvent *event) return true; } -// FIXME coordinate pan with a sleeve-constant (zoom level is not considered appropriately) +// FIXME: +// - coordinate pan with a sleeve-constant (zoom level is not considered scientifically) +// - not left right / up down flicking, so if map is rotated, will act unintuitively void QDeclarativeGeoMapFlickable::updateCamera(int dx, int dy, int timeMs) { if (timeMs < 0) return; - CameraData cameraStart = map_->cameraData(); - QGeoCoordinate coordinate = cameraStart.center(); + AnimatableCoordinate animationStartCoordinate = map_->mapController()->center(); + QGeoCoordinate coordinate = animationStartCoordinate.coordinate(); if (timeMs == 0) { // No animation, just set new values. - coordinate.setLatitude(coordinate.latitude() + (dy / pow(2.0, cameraStart.zoomFactor()))); - coordinate.setLongitude(coordinate.longitude() - (dx / pow(2.0, cameraStart.zoomFactor()))); - cameraStart.setCenter(coordinate); - map_->setCameraData(cameraStart); + coordinate.setLatitude(coordinate.latitude() + (dy / pow(2.0, map_->mapController()->zoom()))); + coordinate.setLongitude(coordinate.longitude() - (dx / pow(2.0, map_->mapController()->zoom()))); + animationStartCoordinate.setCoordinate(coordinate); + map_->mapController()->setCenter(animationStartCoordinate); } else { - qDebug() << "Will do flick animation dx (pix), dy (pix), time (ms): " << dx << dy << timeMs; + //qDebug() << "Will do flick animation dx (pix), dy (pix), time (ms): " << dx << dy << timeMs; if (animation_->state() == QPropertyAnimation::Running) animation_->stop(); - CameraData cameraEnd = cameraStart; + AnimatableCoordinate animationEndCoordinate; + animationEndCoordinate.setProjection(animationStartCoordinate.projection()); animation_->setDuration(timeMs); - coordinate.setLongitude(coordinate.longitude() - (dx / pow(2.0, cameraStart.zoomFactor()))); - coordinate.setLatitude(coordinate.latitude() + (dy / pow(2.0, cameraStart.zoomFactor()))); - cameraEnd.setCenter(coordinate); - - animation_->setStartValue(QVariant::fromValue(cameraStart)); - animation_->setEndValue(QVariant::fromValue(cameraEnd)); - - //animation_->setStartValue(QVariant::fromValue(cameraStart.center())); - //animation_->setEndValue(QVariant::fromValue(cameraEnd.center())); - - qDebug() << "The latitude will go from:" << cameraStart.center().latitude() << "to:" << cameraEnd.center().latitude(); - qDebug() << "The longitude will go from:" << cameraStart.center().longitude() << "to:" << cameraEnd.center().longitude(); + coordinate.setLongitude(coordinate.longitude() - (dx / pow(2.0, map_->mapController()->zoom()))); + coordinate.setLatitude(coordinate.latitude() + (dy / pow(2.0, map_->mapController()->zoom()))); + animationEndCoordinate.setCoordinate(coordinate); + animation_->setStartValue(QVariant::fromValue(animationStartCoordinate)); + animation_->setEndValue(QVariant::fromValue(animationEndCoordinate)); + //qDebug() << "The latitude will go from:" << animationStartCoordinate.coordinate().latitude() << "to:" << animationEndCoordinate.coordinate().latitude(); + //qDebug() << "The longitude will go from:" << animationStartCoordinate.coordinate().longitude() << "to:" << animationEndCoordinate.coordinate().longitude(); // start animation straight away, user may disable the flick in the flickStarted() handler animation_->start(); flicking_ = true; diff --git a/src/imports/location/qdeclarativegeomapmousearea.cpp b/src/imports/location/qdeclarativegeomapmousearea.cpp index e7c6e7e6..ecb0f348 100644 --- a/src/imports/location/qdeclarativegeomapmousearea.cpp +++ b/src/imports/location/qdeclarativegeomapmousearea.cpp @@ -212,8 +212,7 @@ void QDeclarativeGeoMapMouseArea::mapMouseEvent(QQuickMouseEvent* event) mouseEvent_->setX(event->property("x").toInt()); mouseEvent_->setY(event->property("y").toInt()); if (map_) - mouseEvent_->setCoordinate( - map_->map()->screenPositionToCoordinate(QPointF(mouseEvent_->x(), mouseEvent_->y()))); + mouseEvent_->setCoordinate(map_->toCoordinate(QPointF(mouseEvent_->x(), mouseEvent_->y()))->coordinate()); } void QDeclarativeGeoMapMouseArea::releasedHandler(QQuickMouseEvent* event) diff --git a/src/imports/location/qdeclarativegeomappincharea.cpp b/src/imports/location/qdeclarativegeomappincharea.cpp index 283cfa01..bb1fd20b 100644 --- a/src/imports/location/qdeclarativegeomappincharea.cpp +++ b/src/imports/location/qdeclarativegeomappincharea.cpp @@ -492,9 +492,9 @@ void QDeclarativeGeoMapPinchArea::updatePinch() if (pinchEvent_.accepted()) { inPinch_ = true; - pinchStartZoomLevel_ = map_->cameraData().zoomFactor(); - pinchStartRotation_ = map_->cameraData().bearing(); - pinchStartTilt_ = map_->cameraData().tilt(); + pinchStartZoomLevel_ = map_->zoomLevel(); + pinchStartRotation_ = map_->bearing(); + pinchStartTilt_ = map_->tilt(); setActive(true); } else { pinchRejected_ = true; @@ -537,9 +537,7 @@ void QDeclarativeGeoMapPinchArea::updatePinch() qreal perPinchMaximumZoomLevel = qMin(pinchStartZoomLevel_ + maximumZoomLevelChange_, maximumZoomLevel_); newZoomLevel = qMin(qMax(perPinchMinimumZoomLevel, newZoomLevel), perPinchMaximumZoomLevel); pinchLastZoomLevel_ = newZoomLevel; - CameraData cam = map_->map()->cameraData(); - cam.setZoomFactor(newZoomLevel); - map_->map()->setCameraData(cam); + map_->setZoomLevel(newZoomLevel); } if (activeGestures_ & TiltGesture && minimumZoomLevel_ >= 0 && maximumZoomLevel_ >= 0) { // Note: tilt is not yet supported. @@ -557,10 +555,7 @@ void QDeclarativeGeoMapPinchArea::updatePinch() qreal perPinchMaximumTilt = qMin(pinchStartTilt_ + maximumTiltChange_, maximumTilt_); newTilt = qMin(qMax(perPinchMinimumTilt, newTilt), perPinchMaximumTilt); pinchLastTilt_ = newTilt; - - CameraData cam = map_->map()->cameraData(); - cam.setTilt(newTilt); - map_->map()->setCameraData(cam); + map_->setTilt(newTilt); } if (activeGestures_ & RotationGesture) { bool unlimitedRotation = (minimumRotation_ == 0.0 && maximumRotation_ == 0.0); @@ -572,10 +567,7 @@ void QDeclarativeGeoMapPinchArea::updatePinch() r -= 360; if (r < -360.0) r += 360.0; - - CameraData cam = map_->map()->cameraData(); - cam.setBearing(r); - map_->map()->setCameraData(cam); + map_->setBearing(r); } } } diff --git a/src/location/mapsgl/mapcontroller.cpp b/src/location/mapsgl/mapcontroller.cpp index 7f552fdc..df263f69 100644 --- a/src/location/mapsgl/mapcontroller.cpp +++ b/src/location/mapsgl/mapcontroller.cpp @@ -220,6 +220,8 @@ void MapController::setZoom(qreal zoom) void MapController::pan(qreal dx, qreal dy) { + if (dx == 0 && dy == 0) + return; CameraData cd = map_->cameraData(); QGeoCoordinate coord = map_->screenPositionToCoordinate( QPointF(map_->width() / 2 + dx, @@ -230,4 +232,3 @@ void MapController::pan(qreal dx, qreal dy) map_->setCameraData(cd); } } - diff --git a/src/location/mapsgl/mapcontroller.h b/src/location/mapsgl/mapcontroller.h index ccc10cac..70e72d67 100644 --- a/src/location/mapsgl/mapcontroller.h +++ b/src/location/mapsgl/mapcontroller.h @@ -49,7 +49,7 @@ class Map; -class AnimatableCoordinate { +class Q_LOCATION_EXPORT AnimatableCoordinate { public: AnimatableCoordinate(); AnimatableCoordinate(const QGeoCoordinate &coordinate, |