diff options
author | Minh Nguyễn <mxn@1ec5.org> | 2016-01-17 11:23:12 -0800 |
---|---|---|
committer | Minh Nguyễn <mxn@1ec5.org> | 2016-01-18 16:54:58 -0800 |
commit | eee4764ed7cb27faa18d5c4cb498cc0255e2de46 (patch) | |
tree | 6f0ee764076c5fcecf8a440aff521542784e1200 | |
parent | 1a5bc3d80336524379ec98f9de4a8976cb2c4ba6 (diff) | |
download | qtlocation-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.
-rw-r--r-- | src/mbgl/map/transform.cpp | 26 |
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) { |