summaryrefslogtreecommitdiff
path: root/platform/ios/src
diff options
context:
space:
mode:
Diffstat (limited to 'platform/ios/src')
-rw-r--r--platform/ios/src/MGLFaux3DUserLocationAnnotationView.m1
-rw-r--r--platform/ios/src/MGLMapView+IBAdditions.h2
-rw-r--r--platform/ios/src/MGLMapView.h16
-rw-r--r--platform/ios/src/MGLMapView.mm33
4 files changed, 36 insertions, 16 deletions
diff --git a/platform/ios/src/MGLFaux3DUserLocationAnnotationView.m b/platform/ios/src/MGLFaux3DUserLocationAnnotationView.m
index 1ed3d86ad1..a1d9fb1d48 100644
--- a/platform/ios/src/MGLFaux3DUserLocationAnnotationView.m
+++ b/platform/ios/src/MGLFaux3DUserLocationAnnotationView.m
@@ -63,6 +63,7 @@ const CGFloat MGLUserLocationHeadingUpdateThreshold = 0.01;
if (_puckModeActivated)
{
_puckArrow.fillColor = newTintColor;
+ _puckArrow.strokeColor = newTintColor;
}
else
{
diff --git a/platform/ios/src/MGLMapView+IBAdditions.h b/platform/ios/src/MGLMapView+IBAdditions.h
index d02c938c57..6d5351df2b 100644
--- a/platform/ios/src/MGLMapView+IBAdditions.h
+++ b/platform/ios/src/MGLMapView+IBAdditions.h
@@ -31,6 +31,8 @@ NS_ASSUME_NONNULL_BEGIN
@property (nonatomic) IBInspectable double latitude;
@property (nonatomic) IBInspectable double longitude;
@property (nonatomic) IBInspectable double zoomLevel;
+@property (nonatomic) IBInspectable double minimumZoomLevel;
+@property (nonatomic) IBInspectable double maximumZoomLevel;
// Renamed properties. Interface Builder derives the display name of each
// inspectable from the runtime name, but runtime names don’t always make sense
diff --git a/platform/ios/src/MGLMapView.h b/platform/ios/src/MGLMapView.h
index e2c070a54f..3c5aa2c122 100644
--- a/platform/ios/src/MGLMapView.h
+++ b/platform/ios/src/MGLMapView.h
@@ -610,7 +610,7 @@ MGL_EXPORT IB_DESIGNABLE
*
* The default minimumZoomLevel is 0.
*/
-@property (nonatomic) IBInspectable double minimumZoomLevel;
+@property (nonatomic) double minimumZoomLevel;
/**
* The maximum zoom level the map can be shown at.
@@ -621,7 +621,7 @@ MGL_EXPORT IB_DESIGNABLE
* The default maximumZoomLevel is 22. The upper bound for this property
* is 25.5.
*/
-@property (nonatomic) IBInspectable double maximumZoomLevel;
+@property (nonatomic) double maximumZoomLevel;
/**
The heading of the map, measured in degrees clockwise from true north.
@@ -668,12 +668,24 @@ MGL_EXPORT IB_DESIGNABLE
Changing the value of this property updates the receiver immediately. If you
want to animate the change, call `-setVisibleCoordinateBounds:animated:`
instead.
+
+ If a longitude is less than −180 degrees or greater than 180 degrees, the visible
+ bounds straddles the antimeridian or international date line.
+
+ For example, a visible bounds that stretches from Tokyo to San Francisco would have
+ coordinates of (35.68476, -220.24257) and (37.78428, -122.41310).
*/
@property (nonatomic) MGLCoordinateBounds visibleCoordinateBounds;
/**
Changes the receiver’s viewport to fit the given coordinate bounds,
optionally animating the change.
+
+ To make the visible bounds go across the antimeridian or international date line,
+ specify some longitudes less than −180 degrees or greater than 180 degrees.
+
+ For example, a visible bounds that stretches from Tokyo to San Francisco would have
+ coordinates of (35.68476, -220.24257) and (37.78428, -122.41310).
@param bounds The bounds that the viewport will show in its entirety.
@param animated Specify `YES` to animate the change by smoothly scrolling
diff --git a/platform/ios/src/MGLMapView.mm b/platform/ios/src/MGLMapView.mm
index 8dec9e520d..33bbefc9db 100644
--- a/platform/ios/src/MGLMapView.mm
+++ b/platform/ios/src/MGLMapView.mm
@@ -757,7 +757,7 @@ public:
toItem:viewController.topLayoutGuide
attribute:NSLayoutAttributeBottom
multiplier:1.0
- constant:5.0 + self.contentInset.top]];
+ constant:5.0]];
}
[self.compassViewConstraints addObject:
[NSLayoutConstraint constraintWithItem:self.compassView
@@ -767,6 +767,7 @@ public:
attribute:NSLayoutAttributeTop
multiplier:1.0
constant:5.0 + self.contentInset.top]];
+
[self.compassViewConstraints addObject:
[NSLayoutConstraint constraintWithItem:self
attribute:NSLayoutAttributeTrailing
@@ -791,7 +792,7 @@ public:
toItem:viewController.topLayoutGuide
attribute:NSLayoutAttributeBottom
multiplier:1.0
- constant:5.0 + self.contentInset.top]];
+ constant:5.0]];
}
[self.scaleBarConstraints addObject:
[NSLayoutConstraint constraintWithItem:self.scaleBar
@@ -895,8 +896,10 @@ public:
// compass view
[self removeConstraints:self.compassViewConstraints];
[self.compassViewConstraints removeAllObjects];
- [self.compassViewConstraints addObject:[self.compassView.topAnchor constraintEqualToAnchor:safeAreaLayoutGuide.topAnchor
- constant:5.0 + self.contentInset.top]];
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wpartial-availability"
+ [self.compassViewConstraints addObject:[self.compassView.topAnchor constraintEqualToSystemSpacingBelowAnchor:safeAreaLayoutGuide.topAnchor multiplier:1]];
+#pragma clang diagnostic pop
[self.compassViewConstraints addObject:[safeAreaLayoutGuide.rightAnchor constraintEqualToAnchor:self.compassView.rightAnchor
constant:8.0 + self.contentInset.right]];
[self addConstraints:self.compassViewConstraints];
@@ -904,8 +907,10 @@ public:
// scale bar view
[self removeConstraints:self.scaleBarConstraints];
[self.scaleBarConstraints removeAllObjects];
- [self.scaleBarConstraints addObject:[self.scaleBar.topAnchor constraintEqualToAnchor:safeAreaLayoutGuide.topAnchor
- constant:5.0 + self.contentInset.top]];
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wpartial-availability"
+ [self.scaleBarConstraints addObject:[self.scaleBar.topAnchor constraintEqualToSystemSpacingBelowAnchor:safeAreaLayoutGuide.topAnchor multiplier:1]];
+#pragma clang diagnostic pop
[self.scaleBarConstraints addObject:[self.scaleBar.leftAnchor constraintEqualToAnchor:safeAreaLayoutGuide.leftAnchor
constant:8.0 + self.contentInset.left]];
[self addConstraints:self.scaleBarConstraints];
@@ -1811,18 +1816,17 @@ public:
return panCamera;
}
-- (MGLMapCamera *)cameraByZoomingToZoomLevel:(double)zoom aroundAnchorPoint:(CGPoint)anchorPoint
+- (MGLMapCamera *)cameraByZoomingToZoomLevel:(double)zoom aroundAnchorPoint:(CGPoint)anchorPoint
{
- mbgl::EdgeInsets padding = MGLEdgeInsetsFromNSEdgeInsets(self.contentInset);
- mbgl::CameraOptions currentCameraOptions = _mbglMap->getCameraOptions(padding);
- MGLMapCamera *camera;
-
mbgl::ScreenCoordinate anchor = mbgl::ScreenCoordinate { anchorPoint.x, anchorPoint.y };
+ mbgl::EdgeInsets padding = mbgl::EdgeInsets(anchor.y, anchor.x, self.size.height - anchor.y, self.size.width - anchor.x);
+ mbgl::CameraOptions currentCameraOptions = _mbglMap->getCameraOptions(padding);
+
currentCameraOptions.zoom = mbgl::util::clamp(zoom, self.minimumZoomLevel, self.maximumZoomLevel);
currentCameraOptions.anchor = anchor;
- camera = [self cameraForCameraOptions:currentCameraOptions];
+ MGLCoordinateBounds bounds = MGLCoordinateBoundsFromLatLngBounds(_mbglMap->latLngBoundsForCamera(currentCameraOptions));
- return camera;
+ return [self cameraThatFitsCoordinateBounds:bounds];
}
- (MGLMapCamera *)cameraByRotatingToDirection:(CLLocationDirection)degrees aroundAnchorPoint:(CGPoint)anchorPoint
@@ -2956,6 +2960,7 @@ public:
- (void)setMinimumZoomLevel:(double)minimumZoomLevel
{
+ _mbglMap->setMinZoom(minimumZoomLevel);
}
- (double)minimumZoomLevel
@@ -4071,7 +4076,7 @@ public:
}
else
{
- if ([annotation isKindOfClass:[MGLShape class]])
+ if ([annotation isKindOfClass:[MGLMultiPoint class]])
{
return false;
}