diff options
author | Paolo Angelelli <paolo.angelelli@qt.io> | 2017-02-07 12:28:02 +0100 |
---|---|---|
committer | Paolo Angelelli <paolo.angelelli@qt.io> | 2017-02-28 14:39:10 +0000 |
commit | 9deba5318b646d92ffa276dcdd48af08506f8fa7 (patch) | |
tree | a404f33015b5c3b3bfddd37f56d8c1035ca51518 /tests/auto | |
parent | 4e96893901c39fd7a65751549ec82bd18475006f (diff) | |
download | qtlocation-9deba5318b646d92ffa276dcdd48af08506f8fa7.tar.gz |
Fix frustum footprint calculation in QGeoCameraTiles
The old algorithm for computing the frustum footprint has problems
with certain viewport sizes when tilting the map.
This patch fixes the problem, and also removes the dependency on a local
copy of qsort that was necessary in order for that algorithm to work
properly.
Task-number: QTBUG-58684
Task-number: QTBUG-34088
Change-Id: I36aaaa90c567cd19a4ae66dba8def0aec0b00534
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
Diffstat (limited to 'tests/auto')
-rw-r--r-- | tests/auto/qgeocameratiles/tst_qgeocameratiles.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/tests/auto/qgeocameratiles/tst_qgeocameratiles.cpp b/tests/auto/qgeocameratiles/tst_qgeocameratiles.cpp index 33ebda67..1ac0abfa 100644 --- a/tests/auto/qgeocameratiles/tst_qgeocameratiles.cpp +++ b/tests/auto/qgeocameratiles/tst_qgeocameratiles.cpp @@ -69,6 +69,7 @@ private slots: void tilesMapType(); void tilesPositions(); void tilesPositions_data(); + void test_tilted_frustum(); }; void tst_QGeoCameraTiles::row(const PositionTestInfo &pti, int xOffset, int yOffset, int tileX, int tileY, int tileW, int tileH) @@ -116,6 +117,29 @@ void tst_QGeoCameraTiles::test_group(const PositionTestInfo &pti, QList<int> &xV } } +void tst_QGeoCameraTiles::test_tilted_frustum() +{ + // ctFull : Full map in the view, all 16 zl2 tiles visible. Using this as control. + QGeoCameraData cameraFull; + cameraFull.setZoomLevel(2); + cameraFull.setCenter(QGeoCoordinate(0,0)); + QGeoCameraTiles ctFull; + ctFull.setTileSize(64); + ctFull.setCameraData(cameraFull); + ctFull.setScreenSize(QSize(256, 256)); + + QGeoCameraData camera; + camera.setZoomLevel(2.322); + camera.setTilt(30); + camera.setCenter(QWebMercator::mercatorToCoord(QDoubleVector2D(0.75, 0.5))); + QGeoCameraTiles ct; + ct.setTileSize(64); + ct.setScreenSize(QSize(320, 180)); + ct.setCameraData(camera); + + QCOMPARE(ct.createTiles(), ctFull.createTiles()); +} + void tst_QGeoCameraTiles::tilesPlugin() { QGeoCameraData camera; |