summaryrefslogtreecommitdiff
path: root/src/mbgl/map/transform.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mbgl/map/transform.cpp')
-rw-r--r--src/mbgl/map/transform.cpp96
1 files changed, 6 insertions, 90 deletions
diff --git a/src/mbgl/map/transform.cpp b/src/mbgl/map/transform.cpp
index 452cb19a09..5854eaea37 100644
--- a/src/mbgl/map/transform.cpp
+++ b/src/mbgl/map/transform.cpp
@@ -88,7 +88,7 @@ void Transform::easeTo(const CameraOptions& camera, const AnimationOptions& anim
double angle = camera.angle ? -*camera.angle * util::DEG2RAD : getAngle();
double pitch = camera.pitch ? *camera.pitch * util::DEG2RAD : getPitch();
- if (std::isnan(zoom)) {
+ if (std::isnan(zoom) || std::isnan(angle) || std::isnan(pitch)) {
return;
}
@@ -161,7 +161,7 @@ void Transform::flyTo(const CameraOptions &camera, const AnimationOptions &anima
double angle = camera.angle ? -*camera.angle * util::DEG2RAD : getAngle();
double pitch = camera.pitch ? *camera.pitch * util::DEG2RAD : getPitch();
- if (std::isnan(zoom) || state.size.isEmpty()) {
+ if (std::isnan(zoom) || std::isnan(angle) || std::isnan(pitch) || state.size.isEmpty()) {
return;
}
@@ -311,42 +311,9 @@ void Transform::flyTo(const CameraOptions &camera, const AnimationOptions &anima
#pragma mark - Position
void Transform::moveBy(const ScreenCoordinate& offset, const AnimationOptions& animation) {
- ScreenCoordinate centerOffset = {
- offset.x,
- -offset.y,
- };
+ ScreenCoordinate centerOffset = { offset.x, -offset.y, };
ScreenCoordinate centerPoint = getScreenCoordinate() - centerOffset;
-
- CameraOptions camera;
- camera.center = state.screenCoordinateToLatLng(centerPoint);
- easeTo(camera, animation);
-}
-
-void Transform::setLatLng(const LatLng& latLng, const AnimationOptions& animation) {
- CameraOptions camera;
- camera.center = latLng;
- easeTo(camera, animation);
-}
-
-void Transform::setLatLng(const LatLng& latLng, const EdgeInsets& padding, const AnimationOptions& animation) {
- CameraOptions camera;
- camera.center = latLng;
- camera.padding = padding;
- easeTo(camera, animation);
-}
-
-void Transform::setLatLngZoom(const LatLng& latLng, double zoom, const AnimationOptions& animation) {
- setLatLngZoom(latLng, zoom, EdgeInsets(), animation);
-}
-
-void Transform::setLatLngZoom(const LatLng& latLng, double zoom, const EdgeInsets& padding, const AnimationOptions& animation) {
- if (std::isnan(zoom)) return;
-
- CameraOptions camera;
- camera.center = latLng;
- camera.padding = padding;
- camera.zoom = zoom;
- easeTo(camera, animation);
+ easeTo(CameraOptions().withCenter(state.screenCoordinateToLatLng(centerPoint)), animation);
}
LatLng Transform::getLatLng(const EdgeInsets& padding) const {
@@ -368,26 +335,6 @@ ScreenCoordinate Transform::getScreenCoordinate(const EdgeInsets& padding) const
#pragma mark - Zoom
-void Transform::setZoom(double zoom, const AnimationOptions& animation) {
- CameraOptions camera;
- camera.zoom = zoom;
- easeTo(camera, animation);
-}
-
-void Transform::setZoom(double zoom, optional<ScreenCoordinate> anchor, const AnimationOptions& animation) {
- CameraOptions camera;
- camera.zoom = zoom;
- camera.anchor = anchor;
- easeTo(camera, animation);
-}
-
-void Transform::setZoom(double zoom, const EdgeInsets& padding, const AnimationOptions& animation) {
- CameraOptions camera;
- camera.zoom = zoom;
- if (!padding.isFlush()) camera.anchor = getScreenCoordinate(padding);
- easeTo(camera, animation);
-}
-
double Transform::getZoom() const {
return state.getZoom();
}
@@ -437,27 +384,8 @@ void Transform::rotateBy(const ScreenCoordinate& first, const ScreenCoordinate&
center.y = first.y + std::sin(rotateAngle) * heightOffset;
}
- CameraOptions camera;
- camera.angle = -(state.angle + util::angle_between(first - center, second - center)) * util::RAD2DEG;
- easeTo(camera, animation);
-}
-
-void Transform::setAngle(double angle, const AnimationOptions& animation) {
- setAngle(angle, optional<ScreenCoordinate> {}, animation);
-}
-
-void Transform::setAngle(double angle, optional<ScreenCoordinate> anchor, const AnimationOptions& animation) {
- if (std::isnan(angle)) return;
- CameraOptions camera;
- camera.angle = -angle * util::RAD2DEG;
- camera.anchor = anchor;
- easeTo(camera, animation);
-}
-
-void Transform::setAngle(double angle, const EdgeInsets& padding, const AnimationOptions& animation) {
- optional<ScreenCoordinate> anchor;
- if (!padding.isFlush()) anchor = getScreenCoordinate(padding);
- setAngle(angle, anchor, animation);
+ const double angle = -(state.angle + util::angle_between(first - center, second - center)) * util::RAD2DEG;
+ easeTo(CameraOptions().withAngle(angle), animation);
}
double Transform::getAngle() const {
@@ -466,18 +394,6 @@ double Transform::getAngle() const {
#pragma mark - Pitch
-void Transform::setPitch(double pitch, const AnimationOptions& animation) {
- setPitch(pitch, optional<ScreenCoordinate> {}, animation);
-}
-
-void Transform::setPitch(double pitch, optional<ScreenCoordinate> anchor, const AnimationOptions& animation) {
- if (std::isnan(pitch)) return;
- CameraOptions camera;
- camera.pitch = pitch * util::RAD2DEG;
- camera.anchor = anchor;
- easeTo(camera, animation);
-}
-
double Transform::getPitch() const {
return state.pitch;
}