diff options
-rw-r--r-- | src/positioning/qwebmercator.cpp | 2 | ||||
-rw-r--r-- | src/positioningquick/qquickgeocoordinateanimation.cpp | 2 | ||||
-rw-r--r-- | tests/auto/declarative_positioning_core/tst_coordinate.qml | 44 |
3 files changed, 42 insertions, 6 deletions
diff --git a/src/positioning/qwebmercator.cpp b/src/positioning/qwebmercator.cpp index 0aad4100..55b2e600 100644 --- a/src/positioning/qwebmercator.cpp +++ b/src/positioning/qwebmercator.cpp @@ -105,7 +105,7 @@ QGeoCoordinate QWebMercator::coordinateInterpolation(const QGeoCoordinate &from, QDoubleVector2D s = QWebMercator::coordToMercator(from); QDoubleVector2D e = QWebMercator::coordToMercator(to); - double x = s.x(); + double x; if (0.5 < qAbs(e.x() - s.x())) { // handle dateline crossing diff --git a/src/positioningquick/qquickgeocoordinateanimation.cpp b/src/positioningquick/qquickgeocoordinateanimation.cpp index b5d1286c..3f5cef8d 100644 --- a/src/positioningquick/qquickgeocoordinateanimation.cpp +++ b/src/positioningquick/qquickgeocoordinateanimation.cpp @@ -105,7 +105,7 @@ QVariant q_coordinateShortestInterpolator(const QGeoCoordinate &from, const QGeo else if (sx < ex) ex -= 1.0; - x = fromX + (toX - fromX) * progress; + x = sx + (ex - sx) * progress; if (x < 0.0) x += 1.0; diff --git a/tests/auto/declarative_positioning_core/tst_coordinate.qml b/tests/auto/declarative_positioning_core/tst_coordinate.qml index 4b34f7a6..eb5a2573 100644 --- a/tests/auto/declarative_positioning_core/tst_coordinate.qml +++ b/tests/auto/declarative_positioning_core/tst_coordinate.qml @@ -322,12 +322,48 @@ Item { } } - function test_default_coordinate_animation() + function test_default_coordinate_animation(data) { //shortest - coordinate_animation(QtPositioning.coordinate(58.0,12.0), - QtPositioning.coordinate(62.0,24.0), - true) + coordinate_animation(data.from, data.to, data.east) + } + + function test_default_coordinate_animation_data() + { + return [ + { + from: QtPositioning.coordinate(58.0, 12.0), + to: QtPositioning.coordinate(62.0, 24.0), + east: true + }, + { + from: QtPositioning.coordinate(58.0, 24.0), + to: QtPositioning.coordinate(42.0, 12.0), + east: false + }, + // cross 0 + { + from: QtPositioning.coordinate(30, 10), + to: QtPositioning.coordinate(20, -10), + east: false + }, + { + from: QtPositioning.coordinate(30, -20), + to: QtPositioning.coordinate(20, 10), + east: true + }, + // cross 180 + { + from: QtPositioning.coordinate(30, 170), + to: QtPositioning.coordinate(30, -170), + east: true + }, + { + from: QtPositioning.coordinate(30, -170), + to: QtPositioning.coordinate(30, 170), + east: false + }, + ] } function test_east_direction_coordinate_animation(data) |