summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJuha Vuolle <juha.vuolle@nokia.com>2011-11-03 12:08:11 +1000
committerQt by Nokia <qt-info@nokia.com>2011-11-03 04:17:17 +0100
commite777a50c6ee5485a00b800adc3e00e337e65e187 (patch)
tree73bb10af9615ebeb85db7b85c3b5af6867533b2b /src
parent1518f534167c63de130d01b93f885088d285986e (diff)
downloadqtlocation-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.cpp188
-rw-r--r--src/imports/location/qdeclarativegeomap_p.h21
-rw-r--r--src/imports/location/qdeclarativegeomapflickable.cpp43
-rw-r--r--src/imports/location/qdeclarativegeomapmousearea.cpp3
-rw-r--r--src/imports/location/qdeclarativegeomappincharea.cpp20
-rw-r--r--src/location/mapsgl/mapcontroller.cpp3
-rw-r--r--src/location/mapsgl/mapcontroller.h2
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,