summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/positioning/qwebmercator.cpp2
-rw-r--r--src/positioningquick/qquickgeocoordinateanimation.cpp2
-rw-r--r--tests/auto/declarative_positioning_core/tst_coordinate.qml44
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)