summaryrefslogtreecommitdiff
path: root/src/location/declarativemaps/qdeclarativegeomapquickitem.cpp
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2017-07-06 13:54:57 +0200
committerLiang Qi <liang.qi@qt.io>2017-07-06 13:55:56 +0200
commit40b8d8f0b1c4d3dfdb63994f1c5d9e16760496f7 (patch)
tree0ad7002074b2996460d72722435c97d76ddc6466 /src/location/declarativemaps/qdeclarativegeomapquickitem.cpp
parent420139a36dace3bb8f78f2d65b30f7657668d888 (diff)
parent5542c721af400750b13bd411dfbb13891f49618e (diff)
downloadqtlocation-40b8d8f0b1c4d3dfdb63994f1c5d9e16760496f7.tar.gz
Merge remote-tracking branch 'origin/5.9' into dev
Conflicts: .qmake.conf Change-Id: I3241efba9c3a32a4a097a67fd6432c45aad8e6ef
Diffstat (limited to 'src/location/declarativemaps/qdeclarativegeomapquickitem.cpp')
-rw-r--r--src/location/declarativemaps/qdeclarativegeomapquickitem.cpp17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/location/declarativemaps/qdeclarativegeomapquickitem.cpp b/src/location/declarativemaps/qdeclarativegeomapquickitem.cpp
index cb5cce9a..86d67cf8 100644
--- a/src/location/declarativemaps/qdeclarativegeomapquickitem.cpp
+++ b/src/location/declarativemaps/qdeclarativegeomapquickitem.cpp
@@ -393,9 +393,20 @@ void QDeclarativeGeoMapQuickItem::updatePolish()
matrix_->setMatrix(map()->geoProjection().quickItemTransformation(coordinate(), anchorPoint_, zoomLevel_));
setPosition(QPointF(0,0));
} else {
- if (matrix_)
- matrix_->setMatrix(QMatrix4x4());
- setPositionOnMap(coordinate(), anchorPoint_);
+ // if the coordinate is behind the camera, we use the transformation to get the item out of the way
+ if (map()->cameraData().tilt() > 0.0
+ && !map()->geoProjection().isProjectable(map()->geoProjection().geoToWrappedMapProjection(coordinate()))) {
+ if (!matrix_) {
+ matrix_ = new QMapQuickItemMatrix4x4(this);
+ matrix_->appendToItem(opacityContainer_);
+ }
+ matrix_->setMatrix(map()->geoProjection().quickItemTransformation(coordinate(), anchorPoint_, map()->cameraData().zoomLevel()));
+ setPosition(QPointF(0,0));
+ } else {
+ if (matrix_)
+ matrix_->setMatrix(QMatrix4x4());
+ setPositionOnMap(coordinate(), anchorPoint_);
+ }
}
}