diff options
author | Liang Qi <liang.qi@qt.io> | 2017-07-06 13:54:57 +0200 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2017-07-06 13:55:56 +0200 |
commit | 40b8d8f0b1c4d3dfdb63994f1c5d9e16760496f7 (patch) | |
tree | 0ad7002074b2996460d72722435c97d76ddc6466 /src/location/declarativemaps/qdeclarativegeomapquickitem.cpp | |
parent | 420139a36dace3bb8f78f2d65b30f7657668d888 (diff) | |
parent | 5542c721af400750b13bd411dfbb13891f49618e (diff) | |
download | qtlocation-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.cpp | 17 |
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_); + } } } |