diff options
author | David Laing <david.laing@nokia.com> | 2012-02-08 09:06:55 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-02-16 07:19:19 +0100 |
commit | cdb80baa8386d11a0cbab8423ea956ae2393672f (patch) | |
tree | b6679498ff4082d33ef1a0f7d8fd62d735bda5bd /src/location/maps/qgeomap.cpp | |
parent | 3288e355c1d96cd3ac70b0dc9a88ad73f2d94517 (diff) | |
download | qtlocation-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.cpp | 28 |
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()); |