summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Blasche <alexander.blasche@theqtcompany.com>2016-04-21 14:52:01 +0200
committerAlex Blasche <alexander.blasche@theqtcompany.com>2016-04-21 14:52:30 +0200
commitfa0560ef9f23ab8e3bf3a0ea82d835468a3d2449 (patch)
treefcf131ebea2e229a402c00797afffd236139027c
parent2f325118f15bb4382e0031532137eaa3bf90d758 (diff)
parente41c3a9b345536ccee0840ac6f049173aa6a0785 (diff)
downloadqtlocation-fa0560ef9f23ab8e3bf3a0ea82d835468a3d2449.tar.gz
Merge remote-tracking branch 'gerrit/5.7' into dev
Change-Id: I7d73ac8b9e3fc010678068a4bcd814815f92591e
-rw-r--r--src/imports/location/qdeclarativegeomap.cpp4
-rw-r--r--src/plugins/position/position.pro2
-rw-r--r--src/positioning/qgeocoordinate.cpp3
-rw-r--r--tests/auto/qgeocoordinate/tst_qgeocoordinate.cpp7
4 files changed, 11 insertions, 5 deletions
diff --git a/src/imports/location/qdeclarativegeomap.cpp b/src/imports/location/qdeclarativegeomap.cpp
index b39f38c3..c72e5666 100644
--- a/src/imports/location/qdeclarativegeomap.cpp
+++ b/src/imports/location/qdeclarativegeomap.cpp
@@ -586,7 +586,7 @@ void QDeclarativeGeoMap::setMinimumZoomLevel(qreal minimumZoomLevel)
qreal oldMinimumZoomLevel = this->minimumZoomLevel();
if (m_map) {
- minimumZoomLevel = qBound(m_map->cameraCapabilities().minimumZoomLevel(), minimumZoomLevel, maximumZoomLevel());
+ minimumZoomLevel = qBound(qreal(m_map->cameraCapabilities().minimumZoomLevel()), minimumZoomLevel, maximumZoomLevel());
double minimumViewportZoomLevel = m_map->minimumZoomForMapSize(width(),height());
if (minimumZoomLevel < minimumViewportZoomLevel)
minimumZoomLevel = minimumViewportZoomLevel;
@@ -637,7 +637,7 @@ void QDeclarativeGeoMap::setMaximumZoomLevel(qreal maximumZoomLevel)
qreal oldMaximumZoomLevel = this->maximumZoomLevel();
if (m_map)
- maximumZoomLevel = qBound(minimumZoomLevel(), double(maximumZoomLevel), m_map->cameraCapabilities().maximumZoomLevel());
+ maximumZoomLevel = qBound(minimumZoomLevel(), maximumZoomLevel, qreal(m_map->cameraCapabilities().maximumZoomLevel()));
m_gestureArea->setMaximumZoomLevel(maximumZoomLevel);
diff --git a/src/plugins/position/position.pro b/src/plugins/position/position.pro
index 4569810a..df1930b3 100644
--- a/src/plugins/position/position.pro
+++ b/src/plugins/position/position.pro
@@ -4,7 +4,7 @@ qtHaveModule(dbus):SUBDIRS += geoclue
config_gypsy:SUBDIRS += gypsy
qtHaveModule(simulator):SUBDIRS += simulator
osx|ios|tvos:SUBDIRS += corelocation
-android:!android-no-sdk:SUBDIRS += android
+android:SUBDIRS += android
winrt:SUBDIRS += winrt
win32:qtHaveModule(serialport):SUBDIRS += serialnmea
diff --git a/src/positioning/qgeocoordinate.cpp b/src/positioning/qgeocoordinate.cpp
index f28e1865..0386e859 100644
--- a/src/positioning/qgeocoordinate.cpp
+++ b/src/positioning/qgeocoordinate.cpp
@@ -469,8 +469,9 @@ qreal QGeoCoordinate::azimuthTo(const QGeoCoordinate &other) const
double y = sin(dlon) * cos(lat2Rad);
double x = cos(lat1Rad) * sin(lat2Rad) - sin(lat1Rad) * cos(lat2Rad) * cos(dlon);
+ double azimuth = qgeocoordinate_radToDeg(atan2(y, x)) + 360.0;
double whole;
- double fraction = modf(qgeocoordinate_radToDeg(atan2(y, x)), &whole);
+ double fraction = modf(azimuth, &whole);
return qreal((int(whole + 360) % 360) + fraction);
}
diff --git a/tests/auto/qgeocoordinate/tst_qgeocoordinate.cpp b/tests/auto/qgeocoordinate/tst_qgeocoordinate.cpp
index 413fa071..fa9fd5c5 100644
--- a/tests/auto/qgeocoordinate/tst_qgeocoordinate.cpp
+++ b/tests/auto/qgeocoordinate/tst_qgeocoordinate.cpp
@@ -469,7 +469,10 @@ private slots:
QFETCH(QGeoCoordinate, c2);
QFETCH(qreal, azimuth);
- QCOMPARE(QString::number(c1.azimuthTo(c2)), QString::number(azimuth));
+ qreal result = c1.azimuthTo(c2);
+ QVERIFY(result >= 0.0);
+ QVERIFY(result < 360.0);
+ QCOMPARE(QString::number(result), QString::number(azimuth));
}
void azimuthTo_data()
@@ -488,6 +491,8 @@ private slots:
<< LONDON << NEW_YORK << qreal(288.3388804508);
QTest::newRow("north pole -> south pole")
<< NORTH_POLE << SOUTH_POLE << qreal(180.0);
+ QTest::newRow("Almost 360degrees bearing")
+ << QGeoCoordinate(0.5,45.0,0.0) << QGeoCoordinate(0.5,-134.9999651,0.0) << qreal(359.998);
}
void atDistanceAndAzimuth()