summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRomain Quidet <contact@xdappfactory.com>2019-12-12 14:31:24 +0100
committerAleksandar Stojiljkovic <aleksandar.stojiljkovic@mapbox.com>2019-12-17 15:01:45 +0200
commitf34b8f4d31371f51a64878837577ca38840738b4 (patch)
treef4277a7205064b0f3352541a0b2e8734be965920
parentad1a7c595d240ea22fcb2609f29626dd3b96c6be (diff)
downloadqtlocation-mapboxgl-f34b8f4d31371f51a64878837577ca38840738b4.tar.gz
correct insets camera management - see https://github.com/mapbox/mapbox-gl-native-ios/issues/59
-rw-r--r--src/mbgl/map/map.cpp19
1 files changed, 3 insertions, 16 deletions
diff --git a/src/mbgl/map/map.cpp b/src/mbgl/map/map.cpp
index 2e585c3eff..cb31d434fa 100644
--- a/src/mbgl/map/map.cpp
+++ b/src/mbgl/map/map.cpp
@@ -182,13 +182,12 @@ CameraOptions cameraForLatLngs(const std::vector<LatLng>& latLngs, const Transfo
// Calculate the bounds of the possibly rotated shape with respect to the viewport.
ScreenCoordinate nePixel = {-INFINITY, -INFINITY};
ScreenCoordinate swPixel = {INFINITY, INFINITY};
- double viewportHeight = size.height;
for (LatLng latLng : latLngs) {
ScreenCoordinate pixel = transform.latLngToScreenCoordinate(latLng);
swPixel.x = std::min(swPixel.x, pixel.x);
nePixel.x = std::max(nePixel.x, pixel.x);
- swPixel.y = std::min(swPixel.y, viewportHeight - pixel.y);
- nePixel.y = std::max(nePixel.y, viewportHeight - pixel.y);
+ swPixel.y = std::min(swPixel.y, pixel.y);
+ nePixel.y = std::max(nePixel.y, pixel.y);
}
double width = nePixel.x - swPixel.x;
double height = nePixel.y - swPixel.y;
@@ -212,21 +211,9 @@ CameraOptions cameraForLatLngs(const std::vector<LatLng>& latLngs, const Transfo
// Calculate the center point of a virtual bounds that is extended in all directions by padding.
ScreenCoordinate centerPixel = nePixel + swPixel;
- ScreenCoordinate paddedNEPixel = {
- padding.right() / minScale,
- padding.top() / minScale,
- };
- ScreenCoordinate paddedSWPixel = {
- padding.left() / minScale,
- padding.bottom() / minScale,
- };
- centerPixel = centerPixel + paddedNEPixel - paddedSWPixel;
centerPixel /= 2.0;
- // CameraOptions origin is at the top-left corner.
- centerPixel.y = viewportHeight - centerPixel.y;
-
- return CameraOptions().withCenter(transform.screenCoordinateToLatLng(centerPixel)).withZoom(zoom);
+ return CameraOptions().withCenter(transform.screenCoordinateToLatLng(centerPixel)).withPadding(padding).withZoom(zoom);
}
CameraOptions Map::cameraForLatLngs(const std::vector<LatLng>& latLngs, const EdgeInsets& padding, optional<double> bearing, optional<double> pitch) const {