diff options
author | Minh Nguyễn <mxn@1ec5.org> | 2016-04-21 17:23:09 -0700 |
---|---|---|
committer | Minh Nguyễn <mxn@1ec5.org> | 2016-04-22 16:39:25 -0700 |
commit | 466ed55200ffb3a9bc5954b59d87c7dd5630e5ac (patch) | |
tree | 9daedf21439b49b82ea911883eae04ecd2ae3b79 /src | |
parent | 5939dd5b412fcc1ef857711a137589aa865bd442 (diff) | |
download | qtlocation-mapboxgl-466ed55200ffb3a9bc5954b59d87c7dd5630e5ac.tar.gz |
[core, ios, osx] cameraThatFitsCoordinateBounds
Added an API to get a camera that you can pass into -[MGLMapView setCamera:] that fits the given coordinate bounds, by analogy with -[MKMapView regionThatFits:] or -[MKMapView mapRectThatFits:edgePadding:].
Added mbgl::Map::getCameraOptions() for getting the current camera options more conveniently.
Diffstat (limited to 'src')
-rw-r--r-- | src/mbgl/map/map.cpp | 8 | ||||
-rw-r--r-- | src/mbgl/map/transform.cpp | 10 | ||||
-rw-r--r-- | src/mbgl/map/transform.hpp | 2 |
3 files changed, 18 insertions, 2 deletions
diff --git a/src/mbgl/map/map.cpp b/src/mbgl/map/map.cpp index aab09a98e9..46eaa5049b 100644 --- a/src/mbgl/map/map.cpp +++ b/src/mbgl/map/map.cpp @@ -375,6 +375,10 @@ bool Map::isPanning() const { } #pragma mark - + +CameraOptions Map::getCameraOptions(optional<EdgeInsets> padding) const { + return impl->transform.getCameraOptions(padding); +} void Map::jumpTo(const CameraOptions& camera) { impl->transform.jumpTo(camera); @@ -466,7 +470,7 @@ void Map::setLatLngZoom(const LatLng& latLng, double zoom, optional<EdgeInsets> update(Update::RecalculateStyle); } -CameraOptions Map::cameraForLatLngBounds(const LatLngBounds& bounds, optional<EdgeInsets> padding) { +CameraOptions Map::cameraForLatLngBounds(const LatLngBounds& bounds, optional<EdgeInsets> padding) const { AnnotationSegment segment = { bounds.northwest(), bounds.southwest(), @@ -476,7 +480,7 @@ CameraOptions Map::cameraForLatLngBounds(const LatLngBounds& bounds, optional<Ed return cameraForLatLngs(segment, padding); } -CameraOptions Map::cameraForLatLngs(const std::vector<LatLng>& latLngs, optional<EdgeInsets> padding) { +CameraOptions Map::cameraForLatLngs(const std::vector<LatLng>& latLngs, optional<EdgeInsets> padding) const { CameraOptions options; if (latLngs.empty()) { return options; diff --git a/src/mbgl/map/transform.cpp b/src/mbgl/map/transform.cpp index 136209c937..7dcfee65dc 100644 --- a/src/mbgl/map/transform.cpp +++ b/src/mbgl/map/transform.cpp @@ -62,6 +62,16 @@ bool Transform::resize(const std::array<uint16_t, 2> size) { #pragma mark - Camera +CameraOptions Transform::getCameraOptions(optional<EdgeInsets> padding) const { + CameraOptions camera; + camera.center = getLatLng(padding); + camera.padding = padding; + camera.zoom = getZoom(); + camera.angle = getAngle(); + camera.pitch = getPitch(); + return camera; +} + /** * Change any combination of center, zoom, bearing, and pitch, without * a transition. The map will retain the current values for any options diff --git a/src/mbgl/map/transform.hpp b/src/mbgl/map/transform.hpp index 79421117b6..7d3bdceb99 100644 --- a/src/mbgl/map/transform.hpp +++ b/src/mbgl/map/transform.hpp @@ -26,6 +26,8 @@ public: bool resize(std::array<uint16_t, 2> size); // Camera + /** Returns the current camera options. */ + CameraOptions getCameraOptions(optional<EdgeInsets>) const; /** Instantaneously, synchronously applies the given camera options. */ void jumpTo(const CameraOptions&); |