* [android] Update release script to support CircleCI builds (#8950) * update release script to trigger builds on circleci now * update release script to trigger builds on circleci now * [core] When a layer is added, reload its source's tiles * [android] - keep observer when timeout occurs, make observer param nullable, fixup log messages (#8919) * [android] - avoid crashing when deleting already deleted region (#8920) * [android] - update LOST to 2.3.0 (#8872) * [android] - update proguard config, allow debug mimification, update OkHttp to latest version (#8944) * [core, android, ios, macos, qt] v10 default styles Upgraded from v9 default styles to v10 wherever the developer expects to get the latest and greatest, as well as in a couple tests where it may be beneficial to ensure that we can handle a two-digit version number in the style URL. Cherry-picked fromed54849e99. * [ios, macos] Updated documented default style version MGLStyleDefaultVersion is just for Streets now. Deleted style version documentation tests because not all styles are on the same version. Cherry-picked fromca97dd8cf4. * [ios, macos] Undeprecated unversioned style URL factory methods Undeprecated the unversioned style URL factory methods in MGLStyle for consistency with the Android and Qt SDKs. Added warnings about using them with the runtime styling API. Refactored mbgl::util::default_styles to track different versions for different styles. Cherry-picked from9e384b78fb. * [core, android, ios, macos] Added Traffic Day/Night to default styles The Styles API section of the Mapbox API Documentation site now lists Traffic Day v2 and Traffic Night v2, so this change adds those styles to all the places where styles are listed. Also switched iosapp and macosapp to unversioned style factory methods since MGLStyleDefaultVersion is no longer applicable for all styles. Cherry-picked from4d6f54553d. * [android] Release android-v5.1.0-beta.2 (#8976) * [android] url getter on sources * [android] fix ui test filter in makefile * [android] - build SNAPSHOT from release branch (#8958) * [android] - update changelog for 5.1.0-beta.2 * [android] - bump version number * [android] - Camera change listener v2.0 * [core] allow filesource url transform reset * [android] Update attribution wordmark (#8774) * Update wordmark on android * Moved attribution i icon to the right of mapbox word (in mapview preview image) * update padding and margin * [android] update hardcoded branch name * revert version to 5.1.0-SNAPSHOT * [android] - MarkerView deselect events with OnMarkerViewClickListener integration (#8996) * [android] - publish SNAPSHOT from release 5.1.0 branch (#8995) * [ios, macos] edited identity interpolation mode documentation (#8657) * [ios, macos] Factored out tile URL template guide Factored out redundant tile URL template documentation from the MGLRasterSource and MGLVectorSource documentation into a jazzy guide. This documentation used to live in one place, on a method on MGLTileSource, but that method had to be moved to MGLTileSource’s concrete subclasses. A jazzy guide is easier to link to, in any case. * [ios] Telemetry button in modal view controllers (#9027) Fixes #8980. * [android] - bump tools and support lib version due to SNAPSHOT dependencies (#9046) * [android] - bump tools and support lib version for SNAPSHOT dependencies * revert unsupported Circle CI build tools version * [core] Make destructor virtual to avoid object splicing during destruction * [core] add error for non-virtual destructor deletes + add virtual dtors * [android] - remove marker from selected markers when removing marker from annotation manager. (#9047) * Observe layout guides (#7716) * [ios] observe layout guides * [ios] update changelog * [ios, macos] Change == to = in style function initializers * [ios] Add annotation view initializer with annotation and reuse id (#9029) * [ios] Remove annotation view from container view when annotation removed (#9025) The annotation container view keeps an array of annotation views that is separate from the array of subviews that is a property of the UIView parent class. This removes an annotation view from that container view array when the associated annotation is removed. This avoids issue related to previously removed annotation views continuing to be involved in map view logic around annotation view selection due to taps. * [android] - correct bearing conversion when animating the map with jumpTo, easeTo and animateTo. (#9050) * [ios, macos] Updated `maximumZoomLevel` description, cherry-picked #8818 (#8842) Cherry-picked froma3e4e67ea6. * [ios] Updated podspecs and changelog for v3.5.3 (#8870) Cherry-picked from25c19902a2. * [ios] Update podspecs and changelog for iOS v3.5.4 Cherry-picked fromdb7bb509e9. * [ios, macos] Updated changelogs * [ios, macos] changed TRUE -> 'true' (#9059) fixes #9056 * [ios, macos] Light property implementation in MGLStyle (#9043) * [ios, macos] Add MGLLight to MGLStyle * [ios, macos] Implement Objc bindings for Light object * [ios, macos] Remove rawLight from MGLLight and re-implement it as value class * [ios, macos] Fix build on macos * [ios, macos] Add MGLLight documentation, Move MGLLightPosition to MGLLight * [ios, macos] Add MGLLight tests. * [ios, macos] Update changelogs * [ios, macos] Fix misspelling * [ios, macos] Fix MGLLightAnchor enum property names * [ios, macos] Update documentation. Improve varialble naming. * [ios, macos] Rename MGLLightPosition to MGLSphericalPosition * [ios, macos] Update data types of MGLSphericalPosition * [android] - horizontally rotated in snapshot (#9083) * Cherry-pick arabic text to release branch v3.6.0 (#9071) * [core] Throttle tiles to redo symbol placement at most once every 300ms. Fixes issue #8435 and prepares for pitch-scaling changes in issue #8967. * [core] Disable letter-spacing for Arabic labels (issue #9057) * [ios,macos] multipolygon coordinate (#8713) * [ios] MGLMultiPolygon's coordinate property implemented * [ios,macos] Add polylabalel to project config * [ios,macos] Change coordinate property for MGLPolyline,MGLPolygon,MGLMultiPolygon * [macos] Change project configuration to support polilabel * [ios,macos] Add MGLLocationCoordinate2DFromPoint * [ios, macos] Update changelogs * [ios, macos] remove unnecesary variables * [ios, macos] Add radians conversions * [ios, macos] Add coordinate calc to MGLPolyline * [ios, macos] Move radian fuctions to MGLGeometry_Private.h * [ios, macos] Fix code style * [ios, macos] Fix code indentation * [ios, macos] Fix radian per meters constant * [ios, macos] Add test scenarios to testPolyline * [ios, macos] Fix test accuracy * [ios, macos] More robust Streets localization Added Arabic, Portuguese, and Simplified Chinese to the list of languages with specialized fields in the Mapbox Streets source. Rely on NSBundle to select the most appropriate locale based on the user’s preferred languages. * [ios] Fallback to Mapbox.bundle as the framework bundle (#9074) Fixes an issue where localizations could not be found when using static builds. Throws exception if our bundle can't be found. * [ios] Move image resources to an asset catalog & switch to PDFs * [ios, macos] Updated changelogs Reorganized the changelogs with a new packaging section. Added blurbs about #9062, #8713, #9060, and #9031. * [ios] Update pods spec for iOS v3.6.0-beta.1 * [macos] Enable View ‣ Traffic Night Enable the View ‣ Traffic Night menu item and check it when that style is active. * [android] - stop location updates when toggle MyLocationView state (#9099) * [android] - LatLngBounds bearing default value (#9102) * [ios, macos] Fix MGLLight.achor to accept style functions * [ios] Fix annotation initializers for subclasses of MGLAnnotationView (#9104) Use a common init function in both of the provided initializers so that subclasses of `MGLAnnotationView` written in Swift don't need to override `init(annotation, reuseIdentifier)` * [ios] Moved `MGLLight` in jazzy table of contents (#9111) * [android] - logo placement for creating a Mapview programatically (#9094) * [android] - Correct logo placement for creating a Mapview programatically, fixup non default placements * Fixed NIGHTY_TWO_DP typo to NINETY_TWO_DP * [android] - add binding support for Light (#9013) * [android] Update Lost to final version 3.0.0 (#9112) * update lost to final version 3.0.0 * bump MAS version to 2.1.1 * [android] - convert dp to pixels when getting meters per pixel at. (#9048) * Release Android v5.1.0-beta.3 (#9115) * [android] - Changelog update for Android release v5.1.0-beta.3 * update CI & version * reset release properties * [android] - harden orientation changes (#9128) * [ios] Remove filter of single metric event * [ios] remove layout guide observers * Migrate to GL JS–powered feedback form (#9078) * [ios, macos] Updated feedback URL * [ios, macos] Add referrer, heading, pitch to feedback URL * [ios, macos] Updated changelogs for feedback changes * [ios] Vary referrer by platform * [android] - javadoc update for 5.1.0 release (#9138) * [android] - javadoc update for 5.1.0 release * oxford comma * Grammar/spelling tweaks * grammar tweak * grammar tweak * Grammar tweaks * Grammar tweaks * [android] fix missing access token variable issue (#9151) * [ios] Update pods spec for iOS v3.6.0-beta.2 * [android] Cherry picking 9133 (#9145) * [android] Fix tracking mode + camera race condition (#9133) * [android] fix tracking mode + camera race condition * fix resetTrackingModesIfRequired bug (comparing current camera position with target camera position * cherry pick #9133 and update CHANGELOG * add null check to prevent null pointer exception * add null check in custom location engine activity to prevent null pointer exception (#9159) * [core] Make TransformState LatLngBounds optional * [ios] Make annotation view rotation alignment configurable (#9147) This commit adds `rotatesWithMap` property on `MGLAnnotationView`. This property, when set to `YES` fixes the annotation to a map such that view follows map's rotation angle. This is useful when user wants to display rotation-dependent annotations (e.g. sector lights). * [android] - validate if gestures should execute (#9173)
270 lines
11 KiB
Objective-C
270 lines
11 KiB
Objective-C
#import <UIKit/UIKit.h>
|
||
|
||
NS_ASSUME_NONNULL_BEGIN
|
||
|
||
@protocol MGLAnnotation;
|
||
|
||
/** These constants indicate the current drag state of an annotation view. */
|
||
typedef NS_ENUM(NSUInteger, MGLAnnotationViewDragState) {
|
||
/**
|
||
The view is not involved in a drag operation.
|
||
*/
|
||
MGLAnnotationViewDragStateNone = 0,
|
||
/**
|
||
An action occurred that indicated the view should begin dragging.
|
||
|
||
The map view automatically moves draggable annotation views to this state
|
||
in response to the dragging the view after pressing and holding on it.
|
||
*/
|
||
MGLAnnotationViewDragStateStarting,
|
||
/**
|
||
The view is in the midst of a drag operation and is actively tracking the
|
||
user’s gesture.
|
||
*/
|
||
MGLAnnotationViewDragStateDragging,
|
||
/**
|
||
An action occurred that indicated the view should cancel the drag
|
||
operation.
|
||
*/
|
||
MGLAnnotationViewDragStateCanceling,
|
||
/**
|
||
An action occurred that indicated the view was dropped by the user.
|
||
|
||
The map view automatically moves annotation views to this state in response
|
||
to the user lifting their finger at the end of a drag gesture.
|
||
*/
|
||
MGLAnnotationViewDragStateEnding,
|
||
};
|
||
|
||
/**
|
||
The `MGLAnnotationView` class is responsible for marking a point annotation
|
||
with a view. Annotation views represent an annotation object, which is an
|
||
object that corresponds to the `MGLAnnotation` protocol. When an annotation’s
|
||
geographic coordinate is visible in the map view, the map view asks its
|
||
delegate to a corresponding annotation view. If an annotation view is created
|
||
with a reuse identifier, the map view may recycle the view when it goes
|
||
offscreen.
|
||
|
||
Annotation views are compatible with UIKit, Core Animation, and other Cocoa
|
||
Touch frameworks. On the other hand, if you do not need animation or
|
||
interactivity such as dragging, you can use an `MGLAnnotationImage` instead to
|
||
conserve memory and optimize drawing performance.
|
||
*/
|
||
@interface MGLAnnotationView : UIView <NSSecureCoding>
|
||
|
||
#pragma mark Initializing and Preparing the View
|
||
|
||
/**
|
||
Initializes and returns a new annotation view object.
|
||
|
||
The reuse identifier provides a way for you to improve performance by recycling
|
||
annotation views as they enter and leave the map’s viewport. As an annotation
|
||
leaves the viewport, the map view moves its associated view to a reuse queue.
|
||
When a new annotation becomes visible, you can request a view for that
|
||
annotation by passing the appropriate reuse identifier string to the
|
||
`-[MGLMapView dequeueReusableAnnotationViewWithIdentifier:]` method.
|
||
|
||
@param reuseIdentifier A unique string identifier for this view that allows you
|
||
to reuse this view with multiple similar annotations. You can set this
|
||
parameter to `nil` if you don’t intend to reuse the view, but it is a good
|
||
idea in general to specify a reuse identifier to avoid creating redundant
|
||
views.
|
||
@return The initialized annotation view object.
|
||
*/
|
||
- (instancetype)initWithReuseIdentifier:(nullable NSString *)reuseIdentifier;
|
||
|
||
/**
|
||
Initializes and returns a new annotation view object.
|
||
|
||
Providing an annotation allows you to explicitly associate the annotation instance
|
||
with the new view and, in custom subclasses of `MGLAnnotationView`, customize the view
|
||
based on properties of the annotation instance in an overridden initializer. However,
|
||
annotation views that are reused will not necessarily be associated with the
|
||
same annotation they were initialized with. Also, annotation views that are in
|
||
the reuse queue will have a nil value for the annotation property. Passing an annotation
|
||
instance to the view is optional and the map view will automatically associate annotations
|
||
with views when views are provided to the map via the `-[MGLMapViewDelegate mapView:viewForAnnotation:]`
|
||
method.
|
||
|
||
The reuse identifier provides a way for you to improve performance by recycling
|
||
annotation views as they enter and leave the map’s viewport. As an annotation
|
||
leaves the viewport, the map view moves its associated view to a reuse queue.
|
||
When a new annotation becomes visible, you can request a view for that
|
||
annotation by passing the appropriate reuse identifier string to the
|
||
`-[MGLMapView dequeueReusableAnnotationViewWithIdentifier:]` method.
|
||
|
||
@param annotation The annotation object to associate with the new view.
|
||
@param reuseIdentifier A unique string identifier for this view that allows you
|
||
to reuse this view with multiple similar annotations. You can set this
|
||
parameter to `nil` if you don’t intend to reuse the view, but it is a good
|
||
idea in general to specify a reuse identifier to avoid creating redundant
|
||
views.
|
||
@return The initialized annotation view object.
|
||
*/
|
||
- (instancetype)initWithAnnotation:(nullable id<MGLAnnotation>)annotation reuseIdentifier:(nullable NSString *)reuseIdentifier;
|
||
|
||
/**
|
||
Called when the view is removed from the reuse queue.
|
||
|
||
The default implementation of this method does nothing. You can override it in
|
||
your custom annotation view implementation to put the view in a known state
|
||
before it is returned to your map view delegate.
|
||
*/
|
||
- (void)prepareForReuse;
|
||
|
||
/**
|
||
The annotation object currently associated with the view.
|
||
|
||
You should not change the value of this property directly. This property
|
||
contains a non-`nil` value while the annotation view is visible on the map. If
|
||
the view is queued, waiting to be reused, the value is `nil`.
|
||
*/
|
||
@property (nonatomic, nullable) id <MGLAnnotation> annotation;
|
||
|
||
/**
|
||
The string that identifies that this annotation view is reusable.
|
||
|
||
You specify the reuse identifier when you create the view. You use the
|
||
identifier later to retrieve an annotation view that was created previously but
|
||
which is currently unused because its annotation is not on-screen.
|
||
|
||
If you define distinctly different types of annotations (with distinctly
|
||
different annotation views to go with them), you can differentiate between the
|
||
annotation types by specifying different reuse identifiers for each one.
|
||
*/
|
||
@property (nonatomic, readonly, nullable) NSString *reuseIdentifier;
|
||
|
||
#pragma mark Configuring the Appearance
|
||
|
||
/**
|
||
The offset, measured in points, at which to place the center of the view.
|
||
|
||
By default, the center point of an annotation view is placed at the geographic
|
||
coordinate point of the associated annotation. If you do not want the view to
|
||
be centered, you can use this property to reposition the view. The offset’s
|
||
`dx` and `dy` values are measured in points. Positive offset values move the
|
||
annotation view down and to the right, while negative values move it up and to
|
||
the left.
|
||
|
||
Set the offset if the annotation view’s visual center point is somewhere other
|
||
than the logical center of the view. For example, the view may contain an image
|
||
that depicts a downward-pointing pushpin or thumbtack, with the tip positioned
|
||
at the center-bottom of the view. In that case, you would set the offset’s `dx`
|
||
to zero and its `dy` to half the height of the view.
|
||
*/
|
||
@property (nonatomic) CGVector centerOffset;
|
||
|
||
/**
|
||
A Boolean value that determines whether the annotation view grows and shrinks
|
||
as the distance between the viewpoint and the annotation view changes on a
|
||
tilted map.
|
||
|
||
When the value of this property is `YES` and the map is tilted, the annotation
|
||
view appears smaller if it is towards the top of the view (closer to the
|
||
horizon) and larger if it is towards the bottom of the view (closer to the
|
||
viewpoint). This is also the behavior of `MGLAnnotationImage` objects. When the
|
||
value of this property is `NO` or the map’s pitch is zero, the annotation view
|
||
remains the same size regardless of its position on-screen.
|
||
|
||
The default value of this property is `YES`. Set this property to `NO` if the
|
||
view’s legibility is important.
|
||
*/
|
||
@property (nonatomic, assign) BOOL scalesWithViewingDistance;
|
||
|
||
/**
|
||
A Boolean value that determines whether the annotation view rotates together
|
||
with the map.
|
||
|
||
When the value of this property is `YES` and the map is rotated, the annotation
|
||
view rotates. This is also the behavior of `MGLAnnotationImage` objects. When the
|
||
value of this property is `NO` the annotation has its rotation angle fixed.
|
||
|
||
The default value of this property is `NO`. Set this property to `YES` if the
|
||
view’s rotation is important.
|
||
*/
|
||
@property (nonatomic, assign) BOOL rotatesToMatchCamera;
|
||
|
||
#pragma mark Managing the Selection State
|
||
|
||
/**
|
||
A Boolean value indicating whether the annotation view is currently selected.
|
||
|
||
You should not set the value of this property directly. If the property is set
|
||
to `YES`, the annotation view is displaying a callout.
|
||
|
||
By default, this property is set to `NO` and becomes `YES` when the user taps
|
||
the view. Selecting another annotation, whether it is associated with an
|
||
`MGLAnnotationView` or `MGLAnnotationImage` object, deselects any currently
|
||
selected view.
|
||
|
||
Setting this property changes the view’s appearance to reflect the new value
|
||
immediately. If you want the change to be animated, use the
|
||
`-setSelected:animated:` method instead.
|
||
*/
|
||
@property (nonatomic, assign, getter=isSelected) BOOL selected;
|
||
|
||
/**
|
||
Sets the selection state of the annotation view with an optional animation.
|
||
|
||
You should not call this method directly. A map view calls this method in
|
||
response to user interactions with the annotation. Subclasses may override this
|
||
method in order to customize the appearance of the view depending on its
|
||
selection state.
|
||
|
||
@param selected `YES` if the view should display itself as selected; `NO`
|
||
if it should display itself as unselected.
|
||
@param animated `YES` if the change in selection state is animated; `NO` if the
|
||
change is immediate.
|
||
*/
|
||
- (void)setSelected:(BOOL)selected animated:(BOOL)animated;
|
||
|
||
/*
|
||
A Boolean value indicating whether the annotation is enabled.
|
||
|
||
The default value of this property is `YES`. If the value of this property is
|
||
`NO`, the annotation view ignores touch events and cannot be selected.
|
||
Subclasses may also customize the appearance of the view depending on its
|
||
enabled state.
|
||
*/
|
||
@property (nonatomic, assign, getter=isEnabled) BOOL enabled;
|
||
|
||
#pragma mark Supporting Drag Operations
|
||
|
||
/**
|
||
A Boolean value indicating whether the annotation view is draggable.
|
||
|
||
If this property is set to `YES`, the user can drag the annotation after
|
||
pressing and holding the view, and the associated annotation object must also
|
||
implement the `-setCoordinate:` method. The default value of this property is
|
||
`NO`.
|
||
|
||
Setting this property to `YES` lets the map view know that the annotation is
|
||
always draggable. In other words, you cannot conditionalize drag operations by
|
||
attempting to stop an operation that has already been initiated; doing so can
|
||
lead to undefined behavior. Once begun, the drag operation should always
|
||
continue to completion.
|
||
*/
|
||
@property (nonatomic, assign, getter=isDraggable) BOOL draggable;
|
||
|
||
/**
|
||
The current drag state of the annotation view.
|
||
|
||
All states are handled automatically when the `draggable` property is set to
|
||
`YES`. To perform a custom animation in response to a change to this property,
|
||
override the `-setDragState:animated:` method.
|
||
*/
|
||
@property (nonatomic, readonly) MGLAnnotationViewDragState dragState;
|
||
|
||
/**
|
||
Sets the current drag state for the annotation view.
|
||
|
||
You can override this method to animate a custom annotation view as the user
|
||
drags it. As the system detects user actions that would indicate a drag, it
|
||
calls this method to update the drag state.
|
||
*/
|
||
- (void)setDragState:(MGLAnnotationViewDragState)dragState animated:(BOOL)animated NS_REQUIRES_SUPER;
|
||
|
||
@end
|
||
|
||
NS_ASSUME_NONNULL_END
|