summaryrefslogtreecommitdiff
path: root/platform/ios/src/MGLMapViewDelegate.h
diff options
context:
space:
mode:
Diffstat (limited to 'platform/ios/src/MGLMapViewDelegate.h')
-rw-r--r--platform/ios/src/MGLMapViewDelegate.h775
1 files changed, 0 insertions, 775 deletions
diff --git a/platform/ios/src/MGLMapViewDelegate.h b/platform/ios/src/MGLMapViewDelegate.h
deleted file mode 100644
index 3ddb7b007f..0000000000
--- a/platform/ios/src/MGLMapViewDelegate.h
+++ /dev/null
@@ -1,775 +0,0 @@
-#import <UIKit/UIKit.h>
-
-#import "Mapbox.h"
-#import "MGLCameraChangeReason.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@class MGLMapView;
-
-/**
- The `MGLMapViewDelegate` protocol defines a set of optional methods that you
- can use to receive map-related update messages. Because many map operations
- require the `MGLMapView` class to load data asynchronously, the map view calls
- these methods to notify your application when specific operations complete. The
- map view also uses these methods to request information about annotations
- displayed on the map, such as the styles and interaction modes to apply to
- individual annotations.
- */
-@protocol MGLMapViewDelegate <NSObject>
-
-@optional
-
-#pragma mark Responding to Map Position Changes
-
-/**
- Asks the delegate whether the map view should be allowed to change from the
- existing camera to the new camera in response to a user gesture.
-
- This method is called as soon as the user gesture is recognized. It is not
- called in response to a programmatic camera change, such as by setting the
- `centerCoordinate` property or calling `-flyToCamera:completionHandler:`.
-
- This method is called many times during gesturing, so you should avoid performing
- complex or performance-intensive tasks in your implementation.
-
- @param mapView The map view that the user is manipulating.
- @param oldCamera The camera representing the viewpoint at the moment the
- gesture is recognized. If this method returns `NO`, the map view’s camera
- continues to be this camera.
- @param newCamera The expected camera after the gesture completes. If this
- method returns `YES`, this camera becomes the map view’s camera.
- @return A Boolean value indicating whether the map view should stay at
- `oldCamera` or change to `newCamera`.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/constraining-gestures/">
- Restrict map panning to an area</a> example to learn how to use this method
- and `MGLMapCamera` objects to restrict a users ability to pan your map.
- */
-- (BOOL)mapView:(MGLMapView *)mapView shouldChangeFromCamera:(MGLMapCamera *)oldCamera toCamera:(MGLMapCamera *)newCamera;
-
-/**
- :nodoc:
- Asks the delegate whether the map view should be allowed to change from the
- existing camera to the new camera in response to a user gesture.
-
- This method is called as soon as the user gesture is recognized. It is not
- called in response to a programmatic camera change, such as by setting the
- `centerCoordinate` property or calling `-flyToCamera:completionHandler:`.
-
- This method is called many times during gesturing, so you should avoid performing
- complex or performance-intensive tasks in your implementation.
-
- @param mapView The map view that the user is manipulating.
- @param oldCamera The camera representing the viewpoint at the moment the
- gesture is recognized. If this method returns `NO`, the map view’s camera
- continues to be this camera.
- @param newCamera The expected camera after the gesture completes. If this
- method returns `YES`, the viewport of the map will transition to the new camera. Note that the new camera cannot be modified.
- @param reason The reason for the camera change.
- @return A Boolean value indicating whether the map view should stay at
- `oldCamera` or transition to `newCamera`.
-
- @note If this method is implemented `-mapView:shouldChangeFromCamera:toCamera:` will not be called.
- */
-- (BOOL)mapView:(MGLMapView *)mapView shouldChangeFromCamera:(MGLMapCamera *)oldCamera toCamera:(MGLMapCamera *)newCamera reason:(MGLCameraChangeReason)reason;
-
-/**
- Tells the delegate that the viewpoint depicted by the map view is about to change.
-
- This method is called whenever the currently displayed map camera will start
- changing for any reason.
-
- @param mapView The map view whose viewpoint will change.
- @param animated Whether the change will cause an animated effect on the map.
- */
-- (void)mapView:(MGLMapView *)mapView regionWillChangeAnimated:(BOOL)animated;
-
-/**
- :nodoc:
- Tells the delegate that the viewpoint depicted by the map view is about to change.
-
- This method is called whenever the currently displayed map camera will start
- changing for any reason.
-
- @param mapView The map view whose viewpoint will change.
- @param animated Whether the change will cause an animated effect on the map.
- @param reason The reason for the camera change.
-
- @note If this method is implemented `-mapView:regionWillChangeAnimated:` will not be called.
- */
-- (void)mapView:(MGLMapView *)mapView regionWillChangeWithReason:(MGLCameraChangeReason)reason animated:(BOOL)animated;
-
-/**
- Tells the delegate that the viewpoint depicted by the map view is changing.
-
- This method is called as the currently displayed map camera changes as part of
- an animation, whether due to a user gesture or due to a call to a method such
- as `-[MGLMapView setCamera:animated:]`. This method can be called before
- `-mapViewDidFinishLoadingMap:` is called.
-
- During the animation, this method may be called many times to report updates to
- the viewpoint. Therefore, your implementation of this method should be as lightweight
- as possible to avoid affecting performance.
-
- @param mapView The map view whose viewpoint is changing.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/clustering/">
- Cluster point data</a> example to learn how to trigger an action whenever
- the map region changes.
- */
-- (void)mapViewRegionIsChanging:(MGLMapView *)mapView;
-
-/**
- :nodoc:
- Tells the delegate that the viewpoint depicted by the map view is changing.
-
- This method is called as the currently displayed map camera changes as part of
- an animation, whether due to a user gesture or due to a call to a method such
- as `-[MGLMapView setCamera:animated:]`. This method can be called before
- `-mapViewDidFinishLoadingMap:` is called.
-
- During the animation, this method may be called many times to report updates to
- the viewpoint. Therefore, your implementation of this method should be as lightweight
- as possible to avoid affecting performance.
-
- @param mapView The map view whose viewpoint is changing.
- @param reason The reason for the camera change.
-
- @note If this method is implemented `-mapViewRegionIsChanging:` will not be called.
- */
-- (void)mapView:(MGLMapView *)mapView regionIsChangingWithReason:(MGLCameraChangeReason)reason;
-
-/**
- Tells the delegate that the viewpoint depicted by the map view has finished
- changing.
-
- This method is called whenever the currently displayed map camera has finished
- changing, after any calls to `-mapViewRegionIsChanging:` due to animation. Therefore,
- this method can be called before `-mapViewDidFinishLoadingMap:` is called.
-
- @param mapView The map view whose viewpoint has changed.
- @param animated Whether the change caused an animated effect on the map.
- */
-- (void)mapView:(MGLMapView *)mapView regionDidChangeAnimated:(BOOL)animated;
-
-/**
- :nodoc:
- Tells the delegate that the viewpoint depicted by the map view has finished
- changing.
-
- This method is called whenever the currently displayed map camera has finished
- changing, after any calls to `-mapViewRegionIsChanging:` due to animation. Therefore,
- this method can be called before `-mapViewDidFinishLoadingMap:` is called.
-
- @param mapView The map view whose viewpoint has changed.
- @param animated Whether the change caused an animated effect on the map.
- @param reason The reason for the camera change.
-
- @note If this method is implemented `-mapView:regionDidChangeAnimated:` will not be called.
- */
-- (void)mapView:(MGLMapView *)mapView regionDidChangeWithReason:(MGLCameraChangeReason)reason animated:(BOOL)animated;
-
-#pragma mark Loading the Map
-
-/**
- Tells the delegate that the map view will begin to load.
-
- This method is called whenever the map view starts loading, including when a
- new style has been set and the map must reload.
-
- @param mapView The map view that is starting to load.
- */
-- (void)mapViewWillStartLoadingMap:(MGLMapView *)mapView;
-
-/**
- Tells the delegate that the map view has finished loading.
-
- This method is called whenever the map view finishes loading, either after the
- initial load or after a style change has forced a reload.
-
- @param mapView The map view that has finished loading.
- */
-- (void)mapViewDidFinishLoadingMap:(MGLMapView *)mapView;
-
-/**
- Tells the delegate that the map view was unable to load data needed for
- displaying the map.
-
- This method may be called for a variety of reasons, including a network
- connection failure or a failure to fetch the style from the server. You can use
- the given error message to notify the user that map data is unavailable.
-
- @param mapView The map view that is unable to load the data.
- @param error The reason the data could not be loaded.
- */
-- (void)mapViewDidFailLoadingMap:(MGLMapView *)mapView withError:(NSError *)error;
-
-// TODO
-- (void)mapViewWillStartRenderingMap:(MGLMapView *)mapView;
-
-// TODO
-- (void)mapViewDidFinishRenderingMap:(MGLMapView *)mapView fullyRendered:(BOOL)fullyRendered;
-
-/**
- Tells the delegate that the map view is about to redraw.
-
- This method is called any time the map view needs to redraw due to a change in
- the viewpoint or style property transition. This method may be called very
- frequently, even moreso than `-mapViewRegionIsChanging:`. Therefore, your
- implementation of this method should be as lightweight as possible to avoid
- affecting performance.
-
- @param mapView The map view that is about to redraw.
- */
-- (void)mapViewWillStartRenderingFrame:(MGLMapView *)mapView;
-
-/**
- Tells the delegate that the map view has just redrawn.
-
- This method is called any time the map view needs to redraw due to a change in
- the viewpoint or style property transition. This method may be called very
- frequently, even moreso than `-mapViewRegionIsChanging:`. Therefore, your
- implementation of this method should be as lightweight as possible to avoid
- affecting performance.
-
- @param mapView The map view that has just redrawn.
- */
-- (void)mapViewDidFinishRenderingFrame:(MGLMapView *)mapView fullyRendered:(BOOL)fullyRendered;
-
-/**
- Tells the delegate that the map view is entering an idle state, and no more
- drawing will be necessary until new data is loaded or there is some interaction
- with the map.
-
- - No camera transitions are in progress
- - All currently requested tiles have loaded
- - All fade/transition animations have completed
-
- @param mapView The map view that has just entered the idle state.
- */
-- (void)mapViewDidBecomeIdle:(MGLMapView *)mapView;
-
-/**
- Tells the delegate that the map has just finished loading a style.
-
- This method is called during the initialization of the map view and after any
- subsequent loading of a new style. This method is called between the
- `-mapViewWillStartRenderingMap:` and `-mapViewDidFinishRenderingMap:` delegate
- methods. Changes to sources or layers of the current style do not cause this
- method to be called.
-
- This method is the earliest opportunity to modify the layout or appearance of
- the current style before the map view is displayed to the user.
-
- @param mapView The map view that has just loaded a style.
- @param style The style that was loaded.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/runtime-multiple-annotations/">
- Dynamically style interactive points</a> and <a href="https://docs.mapbox.com/ios/maps/examples/shape-collection/">
- Add multiple shapes from a single shape source</a> examples to learn how to
- ensure a map's style has loaded before modifying it at runtime.
- */
-- (void)mapView:(MGLMapView *)mapView didFinishLoadingStyle:(MGLStyle *)style;
-
-- (nullable UIImage *)mapView:(MGLMapView *)mapView didFailToLoadImage:(NSString *)imageName;
-
-/**
- Asks the delegate whether the map view should evict cached images.
-
- This method is called in two scenarios: when the cumulative size of unused images
- exceeds the cache size or when the last tile that includes the image is removed from
- memory.
-
- @param mapView The map view that is evicting the image.
- @param imageName The image name that is going to be removed.
- @return A Boolean value indicating whether the map view should evict
- the cached image.
- */
-- (BOOL)mapView:(MGLMapView *)mapView shouldRemoveStyleImage:(NSString *)imageName;
-
-#pragma mark Tracking User Location
-
-/**
- Tells the delegate that the map view will begin tracking the user’s location.
-
- This method is called when the value of the `showsUserLocation` property
- changes to `YES`.
-
- @param mapView The map view that is tracking the user’s location.
- */
-- (void)mapViewWillStartLocatingUser:(MGLMapView *)mapView;
-
-/**
- Tells the delegate that the map view has stopped tracking the user’s location.
-
- This method is called when the value of the `showsUserLocation` property
- changes to `NO`.
-
- @param mapView The map view that is tracking the user’s location.
- */
-- (void)mapViewDidStopLocatingUser:(MGLMapView *)mapView;
-
-/**
- Tells the delegate that the location of the user was updated.
-
- While the `showsUserLocation` property is set to `YES`, this method is called
- whenever a new location update is received by the map view. This method is also
- called if the map view’s user tracking mode is set to
- `MGLUserTrackingModeFollowWithHeading` and the heading changes, or if it is set
- to `MGLUserTrackingModeFollowWithCourse` and the course changes.
-
- This method is not called if the application is currently running in the
- background. If you want to receive location updates while running in the
- background, you must use the Core Location framework.
-
- @param mapView The map view that is tracking the user’s location.
- @param userLocation The location object representing the user’s latest
- location. This property may be `nil`.
- */
-- (void)mapView:(MGLMapView *)mapView didUpdateUserLocation:(nullable MGLUserLocation *)userLocation;
-
-/**
- Tells the delegate that an attempt to locate the user’s position failed.
-
- @param mapView The map view that is tracking the user’s location.
- @param error An error object containing the reason why location tracking
- failed.
- */
-- (void)mapView:(MGLMapView *)mapView didFailToLocateUserWithError:(NSError *)error;
-
-/**
- Tells the delegate that the map view’s user tracking mode has changed.
-
- This method is called after the map view asynchronously changes to reflect the
- new user tracking mode, for example by beginning to zoom or rotate.
-
- @param mapView The map view that changed its tracking mode.
- @param mode The new tracking mode.
- @param animated Whether the change caused an animated effect on the map.
- */
-- (void)mapView:(MGLMapView *)mapView didChangeUserTrackingMode:(MGLUserTrackingMode)mode animated:(BOOL)animated;
-
-/**
- Returns a screen coordinate at which to position the user location annotation.
- This coordinate is relative to the map view’s origin after applying the map view’s
- content insets.
-
- When unimplemented, the user location annotation is aligned within the center of
- the map view with respect to the content insets.
-
- This method will override any values set by `MGLMapView.userLocationVerticalAlignment`
- or `-[MGLMapView setUserLocationVerticalAlignment:animated:]`.
-
- @param mapView The map view that is tracking the user's location.
- */
-- (CGPoint)mapViewUserLocationAnchorPoint:(MGLMapView *)mapView;
-
-#pragma mark Managing the Appearance of Annotations
-
-/**
- Returns an annotation image object to mark the given point annotation object on
- the map.
-
- Implement this method to mark a point annotation with a static image. If you
- want to mark a particular point annotation with an annotation view instead,
- omit this method or have it return `nil` for that annotation, then implement
- `-mapView:viewForAnnotation:`.
-
- Static annotation images use less memory and draw more quickly than annotation
- views. On the other hand, annotation views are compatible with UIKit, Core
- Animation, and other Cocoa Touch frameworks.
-
- @param mapView The map view that requested the annotation image.
- @param annotation The object representing the annotation that is about to be
- displayed.
- @return The annotation image object to display for the given annotation or
- `nil` if you want to display the default marker image or an annotation view.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/annotation-models/">
- Annotation models</a>, <a href="https://docs.mapbox.com/ios/maps/examples/annotation-view-image/">
- Add annotation views and images</a>, and <a href="https://docs.mapbox.com/ios/maps/examples/marker-image/">
- Mark a place on the map with an image</a> examples to learn to specify which
- image should be used for `MGLAnnotation` objects that have been added to
- your map.
- */
-- (nullable MGLAnnotationImage *)mapView:(MGLMapView *)mapView imageForAnnotation:(id <MGLAnnotation>)annotation;
-
-/**
- Returns the alpha value to use when rendering a shape annotation.
-
- A value of `0.0` results in a completely transparent shape. A value of `1.0`,
- the default, results in a completely opaque shape.
-
- This method sets the opacity of an entire shape, inclusive of its stroke and
- fill. To independently set the values for stroke or fill, specify an alpha
- component in the color returned by `-mapView:strokeColorForShapeAnnotation:` or
- `-mapView:fillColorForPolygonAnnotation:`.
-
- @param mapView The map view rendering the shape annotation.
- @param annotation The annotation being rendered.
- @return An alpha value between `0` and `1.0`.
- */
-- (CGFloat)mapView:(MGLMapView *)mapView alphaForShapeAnnotation:(MGLShape *)annotation;
-
-/**
- Returns the color to use when rendering the outline of a shape annotation.
-
- The default stroke color is the map view’s tint color. If a pattern color is
- specified, the result is undefined.
-
- Opacity may be set by specifying an alpha component. The default alpha value is
- `1.0` and results in a completely opaque stroke.
-
- @param mapView The map view rendering the shape annotation.
- @param annotation The annotation being rendered.
- @return A color to use for the shape outline.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/annotation-models/">
- Annotation models</a> example to learn how to modify the outline color of an
- `MGLShape` object that has been added to your map as an annotation.
- */
-- (UIColor *)mapView:(MGLMapView *)mapView strokeColorForShapeAnnotation:(MGLShape *)annotation;
-
-/**
- Returns the color to use when rendering the fill of a polygon annotation.
-
- The default fill color is the map view’s tint color. If a pattern color is
- specified, the result is undefined.
-
- Opacity may be set by specifying an alpha component. The default alpha value is
- `1.0` and results in a completely opaque shape.
-
- @param mapView The map view rendering the polygon annotation.
- @param annotation The annotation being rendered.
- @return The polygon’s interior fill color.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/polygon/">Add
- a polygon annotation</a> example to learn how to modify the color of a an
- `MGLPolygon` at runtime.
- */
-- (UIColor *)mapView:(MGLMapView *)mapView fillColorForPolygonAnnotation:(MGLPolygon *)annotation;
-
-/**
- Returns the line width in points to use when rendering the outline of a
- polyline annotation.
-
- By default, the polyline is outlined with a line `3.0` points wide.
-
- @param mapView The map view rendering the polygon annotation.
- @param annotation The annotation being rendered.
- @return A line width for the polyline, measured in points.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/line-geojson/">
- Add a line annotation from GeoJSON</a> example to learn how to modify the
- line width of an `MGLPolylineFeature` on your map.
- */
-- (CGFloat)mapView:(MGLMapView *)mapView lineWidthForPolylineAnnotation:(MGLPolyline *)annotation;
-
-#pragma mark Managing Annotation Views
-
-/**
- Returns a view object to mark the given point annotation object on the map.
-
- Implement this method to mark a point annotation with a view object. If you
- want to mark a particular point annotation with a static image instead, omit
- this method or have it return `nil` for that annotation, then implement
- `-mapView:imageForAnnotation:` instead.
-
- Annotation views are compatible with UIKit, Core Animation, and other Cocoa
- Touch frameworks. On the other hand, static annotation images use less memory
- and draw more quickly than annotation views.
-
- The user location annotation view can also be customized via this method. When
- `annotation` is an instance of `MGLUserLocation` (or equal to the map view’s
- `userLocation` property), return an instance of `MGLUserLocationAnnotationView`
- (or a subclass thereof).
-
- @param mapView The map view that requested the annotation view.
- @param annotation The object representing the annotation that is about to be
- displayed.
- @return The view object to display for the given annotation or `nil` if you
- want to display an annotation image instead.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/annotation-view-image/">
- Add annotation views and images</a> example to learn how to specify what
- `MGLViewAnnotation` to use for a given `MGLPointAnnotation` object on your
- map.
- */
-- (nullable MGLAnnotationView *)mapView:(MGLMapView *)mapView viewForAnnotation:(id <MGLAnnotation>)annotation;
-
-/**
- Tells the delegate that one or more annotation views have been added and
- positioned on the map.
-
- This method is called just after the views are added to the map. You can
- implement this method to animate the addition of the annotation views.
-
- @param mapView The map view to which the annotation views were added.
- @param annotationViews An array of `MGLAnnotationView` objects representing the
- views that were added.
- */
-- (void)mapView:(MGLMapView *)mapView didAddAnnotationViews:(NSArray<MGLAnnotationView *> *)annotationViews;
-
-#pragma mark Selecting Annotations
-
-/**
- Returns a Boolean value indicating whether the shape annotation can be selected.
-
- If the return value is `YES`, the user can select the annotation by tapping
- on it. If the delegate does not implement this method, the default value is `YES`.
-
- @param mapView The map view that has selected the annotation.
- @param annotation The object representing the shape annotation.
- @return A Boolean value indicating whether the annotation can be selected.
- */
-- (BOOL)mapView:(MGLMapView *)mapView shapeAnnotationIsEnabled:(MGLShape *)annotation;
-
-/**
- Tells the delegate that one of its annotations was selected.
-
- You can use this method to track changes in the selection state of annotations.
-
- If the annotation is associated with an annotation view, you can also implement
- `-mapView:didSelectAnnotationView:`, which is called immediately after this
- method is called.
-
- @param mapView The map view containing the annotation.
- @param annotation The annotation that was selected.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/runtime-multiple-annotations/">
- Dynamically style interactive points</a> example to learn how to remove an
- annotation view if it has already been selected.
- */
-- (void)mapView:(MGLMapView *)mapView didSelectAnnotation:(id <MGLAnnotation>)annotation;
-
-/**
- Tells the delegate that one of its annotations was deselected.
-
- You can use this method to track changes in the selection state of annotations.
-
- If the annotation is associated with an annotation view, you can also implement
- `-mapView:didDeselectAnnotationView:`, which is called immediately after this
- method is called.
-
- @param mapView The map view containing the annotation.
- @param annotation The annotation that was deselected.
- */
-- (void)mapView:(MGLMapView *)mapView didDeselectAnnotation:(id <MGLAnnotation>)annotation;
-
-/**
- Tells the delegate that one of its annotation views was selected.
-
- You can use this method to track changes in the selection state of annotation
- views.
-
- This method is only called for annotation views. To track changes in the
- selection state of all annotations, including those associated with static
- annotation images, implement `-mapView:didSelectAnnotation:`, which is called
- immediately before this method is called.
-
- @param mapView The map view containing the annotation.
- @param annotationView The annotation view that was selected.
- */
-- (void)mapView:(MGLMapView *)mapView didSelectAnnotationView:(MGLAnnotationView *)annotationView;
-
-/**
- Tells the delegate that one of its annotation views was deselected.
-
- You can use this method to track changes in the selection state of annotation
- views.
-
- This method is only called for annotation views. To track changes in the
- selection state of all annotations, including those associated with static
- annotation images, implement `-mapView:didDeselectAnnotation:`, which is called
- immediately before this method is called.
-
- @param mapView The map view containing the annotation.
- @param annotationView The annotation view that was deselected.
- */
-- (void)mapView:(MGLMapView *)mapView didDeselectAnnotationView:(MGLAnnotationView *)annotationView;
-
-#pragma mark Managing Callout Views
-
-/**
- Returns a Boolean value indicating whether the annotation is able to display
- extra information in a callout bubble.
-
- This method is called after an annotation is selected, before any callout is
- displayed for the annotation.
-
- If the return value is `YES`, a callout view is shown when the user taps on an
- annotation, selecting it. The default callout displays the annotation’s title
- and subtitle. You can add accessory views to either end of the callout by
- implementing the `-mapView:leftCalloutAccessoryViewForAnnotation:` and
- `-mapView:rightCalloutAccessoryViewForAnnotation:` methods. You can further
- customize the callout’s contents by implementing the
- `-mapView:calloutViewForAnnotation:` method.
-
- If the return value is `NO`, or if this method is absent from the delegate, or
- if the annotation lacks a title, the annotation will not show a callout even
- when selected.
-
- @param mapView The map view that has selected the annotation.
- @param annotation The object representing the annotation.
- @return A Boolean value indicating whether the annotation should show a
- callout.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/annotation-view-image/">
- Add annotation views and images</a>, <a href="https://docs.mapbox.com/ios/maps/examples/custom-callout/">
- Display custom views as callouts</a>, and <a href="https://docs.mapbox.com/ios/maps/examples/default-callout/">
- Default callout usage</a> examples to learn how to show callouts for
- `MGLAnnotation` objects.
- */
-- (BOOL)mapView:(MGLMapView *)mapView annotationCanShowCallout:(id <MGLAnnotation>)annotation;
-
-/**
- Returns a callout view to display for the given annotation.
-
- If this method is present in the delegate, it must return a new instance of a
- view dedicated to display the callout. The returned view will be configured by
- the map view.
-
- If this method is absent from the delegate, or if it returns `nil`, a standard,
- two-line, bubble-like callout view is displayed by default.
-
- @param mapView The map view that requested the callout view.
- @param annotation The object representing the annotation.
- @return A view conforming to the `MGLCalloutView` protocol, or `nil` to use the
- default callout view.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/custom-callout/">
- Display custom views as callouts</a> example to learn how to customize an
- `MGLAnnotation` object's `MGLCalloutView`.
- */
-- (nullable id <MGLCalloutView>)mapView:(MGLMapView *)mapView calloutViewForAnnotation:(id <MGLAnnotation>)annotation;
-
-/**
- Returns the view to display on the left side of the standard callout bubble.
-
- The left callout view is typically used to convey information about the
- annotation or to link to custom information provided by your application.
-
- If the view you specify is a descendant of the `UIControl` class, you can use
- the map view’s delegate to receive notifications when your control is tapped,
- by implementing the `-mapView:annotation:calloutAccessoryControlTapped:`
- method. If the view you specify does not descend from `UIControl`, your view is
- responsible for handling any touch events within its bounds.
-
- If this method is absent from the delegate, or if it returns `nil`, the
- standard callout view has no accessory view on its left side. The return value
- of this method is ignored if `-mapView:calloutViewForAnnotation:` is present in
- the delegate.
-
- To display a view on the callout’s right side, implement the
- `-mapView:rightCalloutAccessoryViewForAnnotation:` method.
-
- @param mapView The map view presenting the annotation callout.
- @param annotation The object representing the annotation with the callout.
- @return The accessory view to display.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/default-callout/">
- Default callout usage</a> example to learn how to modify the view that is
- displayed on the left side of the standard callout bubble.
- */
-- (nullable UIView *)mapView:(MGLMapView *)mapView leftCalloutAccessoryViewForAnnotation:(id <MGLAnnotation>)annotation;
-
-/**
- Returns the view to display on the right side of the standard callout bubble.
-
- The right callout view is typically used to convey information about the
- annotation or to link to custom information provided by your application.
-
- If the view you specify is a descendant of the `UIControl` class, you can use
- the map view’s delegate to receive notifications when your control is tapped,
- by implementing the `-mapView:annotation:calloutAccessoryControlTapped:`
- method. If the view you specify does not descend from `UIControl`, your view is
- responsible for handling any touch events within its bounds.
-
- If this method is absent from the delegate, or if it returns `nil`, the
- standard callout view has no accessory view on its right side. The return value
- of this method is ignored if `-mapView:calloutViewForAnnotation:` is present in
- the delegate.
-
- To display a view on the callout’s left side, implement the
- `-mapView:leftCalloutAccessoryViewForAnnotation:` method.
-
- @param mapView The map view presenting the annotation callout.
- @param annotation The object representing the annotation with the callout.
- @return The accessory view to display.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/default-callout/">
- Default callout usage</a> example to learn how to modify the view that is
- displayed on the right side of the standard callout bubble.
- */
-- (nullable UIView *)mapView:(MGLMapView *)mapView rightCalloutAccessoryViewForAnnotation:(id <MGLAnnotation>)annotation;
-
-/**
- Tells the delegate that the user tapped one of the accessory controls in the
- annotation’s callout view.
-
- In a standard callout view, accessory views contain custom content and are
- positioned on either side of the annotation title text. If an accessory view
- you specify is a descendant of the `UIControl` class, the map view calls this
- method as a convenience whenever the user taps your view. You can use this
- method to respond to taps and perform any actions associated with that control.
- For example, if your control displays additional information about the
- annotation, you could use this method to present a modal panel with that
- information.
-
- If your custom accessory views are not descendants of the `UIControl` class,
- the map view does not call this method. If the annotation has a custom callout
- view via the `-mapView:calloutViewForAnnotation:` method, you can specify the
- custom accessory views using the `MGLCalloutView` protocol’s
- `leftAccessoryView` and `rightAccessoryView` properties.
-
- @param mapView The map view containing the specified annotation.
- @param annotation The annotation whose accessory view was tapped.
- @param control The control that was tapped.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/default-callout/">
- Default callout usage</a> example to learn how to trigger an action when the
- standard callout bubble's accessory control is tapped.
- */
-- (void)mapView:(MGLMapView *)mapView annotation:(id <MGLAnnotation>)annotation calloutAccessoryControlTapped:(UIControl *)control;
-
-/**
- Tells the delegate that the user tapped on an annotation’s callout view.
-
- This method is called when the user taps on the body of the callout view, as
- opposed to the callout’s left or right accessory view. If the annotation has a
- custom callout view via the `-mapView:calloutViewForAnnotation:` method, this
- method is only called whenever the callout view calls its delegate’s
- `-[MGLCalloutViewDelegate calloutViewTapped:]` method.
-
- If this method is present on the delegate, the standard callout view’s body
- momentarily highlights when the user taps it, whether or not this method does
- anything in response to the tap.
-
- @param mapView The map view containing the specified annotation.
- @param annotation The annotation whose callout was tapped.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/custom-callout/">
- Display custom views as callouts</a> example to learn how to trigger an
- action when an `MGLAnnotation`s `MGLCalloutView` is tapped.
- */
-- (void)mapView:(MGLMapView *)mapView tapOnCalloutForAnnotation:(id <MGLAnnotation>)annotation;
-
-@end
-
-NS_ASSUME_NONNULL_END