diff options
author | Bruno de Oliveira Abinader <bruno@mapbox.com> | 2016-02-24 00:54:03 +0200 |
---|---|---|
committer | Bruno de Oliveira Abinader <bruno@mapbox.com> | 2016-03-01 20:58:54 +0000 |
commit | abe3f9ce7ab8087b13871472a11e7f5021084642 (patch) | |
tree | c1b0128546be655a30628c167bc50a8fe1c86862 /src | |
parent | b325df880baf6f3a454c51d2e21d69114477c276 (diff) | |
download | qtlocation-mapboxgl-abe3f9ce7ab8087b13871472a11e7f5021084642.tar.gz |
[core] Moved wrapping to LatLng scope
Fixes a precision loss when converting unwrapped LatLngs.
Diffstat (limited to 'src')
-rw-r--r-- | src/mbgl/map/transform.cpp | 17 | ||||
-rw-r--r-- | src/mbgl/map/transform.hpp | 2 |
2 files changed, 2 insertions, 17 deletions
diff --git a/src/mbgl/map/transform.cpp b/src/mbgl/map/transform.cpp index 7e7436b1dc..d8cbfd23c2 100644 --- a/src/mbgl/map/transform.cpp +++ b/src/mbgl/map/transform.cpp @@ -101,7 +101,7 @@ void Transform::easeTo(const CameraOptions& camera, const AnimationOptions& anim state.lngX(startLatLng.longitude), state.latY(startLatLng.latitude), }; - unwrapLatLng(latLng); + latLng.unwrapForShortestPath(getLatLng()); const ScreenCoordinate endPoint = { state.lngX(latLng.longitude), state.latY(latLng.latitude), @@ -184,7 +184,7 @@ void Transform::flyTo(const CameraOptions &camera, const AnimationOptions &anima state.lngX(startLatLng.longitude), state.latY(startLatLng.latitude), }; - unwrapLatLng(latLng); + latLng.unwrapForShortestPath(getLatLng()); const ScreenCoordinate endPoint = { state.lngX(latLng.longitude), state.latY(latLng.latitude), @@ -329,19 +329,6 @@ void Transform::flyTo(const CameraOptions &camera, const AnimationOptions &anima }, duration); } -/** If a path crossing the antemeridian would be shorter, extend the final - coordinate so that interpolating between the two endpoints will cross it. */ -void Transform::unwrapLatLng(LatLng& latLng) { - LatLng startLatLng = getLatLng(); - if (std::abs(startLatLng.longitude) + std::abs(latLng.longitude) > util::LONGITUDE_MAX) { - if (startLatLng.longitude > 0 && latLng.longitude < 0) { - latLng.longitude += 360; - } else if (startLatLng.longitude < 0 && latLng.longitude > 0) { - latLng.longitude -= 360; - } - } -} - #pragma mark - Position void Transform::moveBy(const ScreenCoordinate& offset, const Duration& duration) { diff --git a/src/mbgl/map/transform.hpp b/src/mbgl/map/transform.hpp index d7f9e6c51a..638eead5f1 100644 --- a/src/mbgl/map/transform.hpp +++ b/src/mbgl/map/transform.hpp @@ -144,8 +144,6 @@ public: LatLng screenCoordinateToLatLng(const ScreenCoordinate&) const; private: - void unwrapLatLng(LatLng&); - View &view; TransformState state; |