summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMinh Nguyễn <mxn@1ec5.org>2016-01-17 11:23:12 -0800
committerMinh Nguyễn <mxn@1ec5.org>2016-01-18 16:54:58 -0800
commiteee4764ed7cb27faa18d5c4cb498cc0255e2de46 (patch)
tree6f0ee764076c5fcecf8a440aff521542784e1200 /src
parent1a5bc3d80336524379ec98f9de4a8976cb2c4ba6 (diff)
downloadqtlocation-mapboxgl-eee4764ed7cb27faa18d5c4cb498cc0255e2de46.tar.gz
[core] Reformulated setLatLng() based on CameraOptions
This version of setLatLng() can be expressed by constraining the viewport to a 0×0 viewport around the passed-in point.
Diffstat (limited to 'src')
-rw-r--r--src/mbgl/map/transform.cpp26
1 files changed, 11 insertions, 15 deletions
diff --git a/src/mbgl/map/transform.cpp b/src/mbgl/map/transform.cpp
index 1363e2abd5..f7c84ff5f0 100644
--- a/src/mbgl/map/transform.cpp
+++ b/src/mbgl/map/transform.cpp
@@ -379,21 +379,17 @@ void Transform::setLatLng(const LatLng& latLng, const PrecisionPoint& point, con
if (!latLng || !point) {
return;
}
-
- auto coord = state.latLngToCoordinate(latLng);
- auto coordAtPoint = state.pointToCoordinate(point);
- auto coordCenter = state.pointToCoordinate({ state.width / 2.0f, state.height / 2.0f });
-
- float columnDiff = coordAtPoint.column - coord.column;
- float rowDiff = coordAtPoint.row - coord.row;
-
- auto newLatLng = state.coordinateToLatLng({
- coordCenter.column - columnDiff,
- coordCenter.row - rowDiff,
- coordCenter.zoom
- });
-
- setLatLng(newLatLng, duration);
+
+ // Pretend the viewport is 0×0 around the passed-in point.
+ CameraOptions camera;
+ camera.center = latLng;
+ EdgeInsets padding;
+ padding.top = point.y;
+ padding.left = point.x;
+ padding.bottom = state.height - point.y;
+ padding.right = state.width - point.x;
+ camera.padding = padding;
+ easeTo(camera, duration);
}
void Transform::setLatLngZoom(const LatLng& latLng, double zoom, const Duration& duration) {