diff --git a/src/mbgl/map/transform.cpp b/src/mbgl/map/transform.cpp index b283251431a..da085ac7507 100644 --- a/src/mbgl/map/transform.cpp +++ b/src/mbgl/map/transform.cpp @@ -662,5 +662,5 @@ LatLng Transform::screenCoordinateToLatLng(const ScreenCoordinate& point) const ScreenCoordinate flippedPoint = point; flippedPoint.y = state.height - flippedPoint.y; - return state.screenCoordinateToLatLng(flippedPoint); + return state.screenCoordinateToLatLng(flippedPoint).wrapped(); } diff --git a/test/map/transform.cpp b/test/map/transform.cpp index d26df51fd40..0567696f609 100644 --- a/test/map/transform.cpp +++ b/test/map/transform.cpp @@ -410,11 +410,17 @@ TEST(Transform, Antimeridian) { ScreenCoordinate pixelWaikiriForwards = transform.latLngToScreenCoordinate(coordinateWaikiri); ASSERT_DOUBLE_EQ(437.95953728819512, pixelWaikiriForwards.x); ASSERT_DOUBLE_EQ(pixelWaikiri.y, pixelWaikiriForwards.y); + LatLng coordinateFromPixel = transform.screenCoordinateToLatLng(pixelWaikiriForwards); + ASSERT_NEAR(coordinateWaikiri.latitude, coordinateFromPixel.latitude, 0.000001); + ASSERT_NEAR(coordinateWaikiri.longitude, coordinateFromPixel.longitude, 0.000001); transform.setLatLng({ coordinateWaikiri.latitude, -179.9787 }); ScreenCoordinate pixelWaikiriBackwards = transform.latLngToScreenCoordinate(coordinateWaikiri); ASSERT_DOUBLE_EQ(pixelWaikiriForwards.x, pixelWaikiriBackwards.x); ASSERT_DOUBLE_EQ(pixelWaikiriForwards.y, pixelWaikiriBackwards.y); + coordinateFromPixel = transform.screenCoordinateToLatLng(pixelWaikiriBackwards); + ASSERT_NEAR(coordinateWaikiri.latitude, coordinateFromPixel.latitude, 0.000001); + ASSERT_NEAR(coordinateWaikiri.longitude, coordinateFromPixel.longitude, 0.000001); } TEST(Transform, Camera) {