summaryrefslogtreecommitdiff
path: root/src/location/maps/qgeomap.cpp
diff options
context:
space:
mode:
authorDavid Laing <david.laing@nokia.com>2012-02-08 09:06:55 +1000
committerQt by Nokia <qt-info@nokia.com>2012-02-16 07:19:19 +0100
commitcdb80baa8386d11a0cbab8423ea956ae2393672f (patch)
treeb6679498ff4082d33ef1a0f7d8fd62d735bda5bd /src/location/maps/qgeomap.cpp
parent3288e355c1d96cd3ac70b0dc9a88ad73f2d94517 (diff)
downloadqtlocation-cdb80baa8386d11a0cbab8423ea956ae2393672f.tar.gz
Adds the camera capabilities class.
This class unifies access to the data related to what the valid range of camera parameters are for a given map plugin. Change-Id: I681eba4a8e1c1cbd34995ed1e97064ab194b1e40 Reviewed-by: Alex Wilson <alex.wilson@nokia.com>
Diffstat (limited to 'src/location/maps/qgeomap.cpp')
-rw-r--r--src/location/maps/qgeomap.cpp28
1 files changed, 27 insertions, 1 deletions
diff --git a/src/location/maps/qgeomap.cpp b/src/location/maps/qgeomap.cpp
index 5f57c299..2cd424fc 100644
--- a/src/location/maps/qgeomap.cpp
+++ b/src/location/maps/qgeomap.cpp
@@ -44,6 +44,7 @@
#include "qgeotilecache_p.h"
#include "qgeotilespec.h"
#include "qgeoprojection_p.h"
+#include "qgeocameracapabilities_p.h"
#include "qgeomapcontroller_p.h"
#include "qdoublevector2d_p.h"
#include "qdoublevector3d_p.h"
@@ -234,7 +235,7 @@ void QGeoMapPrivate::setMappingManager(QGeoMappingManager *manager)
if (manager) {
manager->registerMap(map_);
- cameraTiles_->setMaximumZoomLevel(static_cast<int>(ceil(manager->maximumZoomLevel())));
+ cameraTiles_->setMaximumZoomLevel(static_cast<int>(ceil(manager->cameraCapabilities().maximumZoomLevel())));
cameraTiles_->setTileSize(manager->tileSize());
mapGeometry_->setTileSize(manager->tileSize());
@@ -275,6 +276,31 @@ void QGeoMapPrivate::setCameraData(const QGeoCameraData &cameraData)
cameraData_.setCenter(coord);
}
+ if (manager_) {
+ QGeoCameraCapabilities capabilities = manager_->cameraCapabilities();
+ if (cameraData_.zoomFactor() < capabilities.minimumZoomLevel())
+ cameraData_.setZoomFactor(capabilities.minimumZoomLevel());
+
+ if (cameraData_.zoomFactor() > capabilities.maximumZoomLevel())
+ cameraData_.setZoomFactor(capabilities.maximumZoomLevel());
+
+ if (!capabilities.supportsBearing())
+ cameraData_.setBearing(0.0);
+
+ if (capabilities.supportsTilting()) {
+ if (cameraData_.tilt() < capabilities.minimumTilt())
+ cameraData_.setTilt(capabilities.minimumTilt());
+
+ if (cameraData_.tilt() > capabilities.maximumTilt())
+ cameraData_.setTilt(capabilities.maximumTilt());
+ } else {
+ cameraData_.setTilt(0.0);
+ }
+
+ if (!capabilities.supportsRolling())
+ cameraData_.setRoll(0.0);
+ }
+
cameraData_.setAspectRatio(aspectRatio_);
cameraData_.setCoordinateInterpolator(mapGeometry_->coordinateInterpolator().toWeakRef());