From eee4764ed7cb27faa18d5c4cb498cc0255e2de46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Minh=20Nguye=CC=82=CC=83n?= Date: Sun, 17 Jan 2016 11:23:12 -0800 Subject: [PATCH] [core] Reformulated setLatLng() based on CameraOptions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This version of setLatLng() can be expressed by constraining the viewport to a 0×0 viewport around the passed-in point. --- src/mbgl/map/transform.cpp | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/src/mbgl/map/transform.cpp b/src/mbgl/map/transform.cpp index 1363e2abd..f7c84ff5f 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) {