summaryrefslogtreecommitdiff
path: root/platform/darwin/src/MGLShapeSource.h
diff options
context:
space:
mode:
Diffstat (limited to 'platform/darwin/src/MGLShapeSource.h')
-rw-r--r--platform/darwin/src/MGLShapeSource.h400
1 files changed, 0 insertions, 400 deletions
diff --git a/platform/darwin/src/MGLShapeSource.h b/platform/darwin/src/MGLShapeSource.h
deleted file mode 100644
index 675c219300..0000000000
--- a/platform/darwin/src/MGLShapeSource.h
+++ /dev/null
@@ -1,400 +0,0 @@
-#import "MGLFoundation.h"
-#import "MGLTypes.h"
-#import "MGLSource.h"
-
-NS_ASSUME_NONNULL_BEGIN
-
-@protocol MGLFeature;
-@class MGLPointFeature;
-@class MGLPointFeatureCluster;
-@class MGLShape;
-
-/**
- Options for `MGLShapeSource` objects.
- */
-typedef NSString *MGLShapeSourceOption NS_STRING_ENUM;
-
-/**
- An `NSNumber` object containing a Boolean enabling or disabling clustering.
- If the `shape` property contains point shapes, setting this option to
- `YES` clusters the points by radius into groups. The default value is `NO`.
-
- This option corresponds to the
- <a href="https://www.mapbox.com/mapbox-gl-style-spec/#sources-geojson-cluster"><code>cluster</code></a>
- source property in the Mapbox Style Specification.
-
- This option only affects point features within an `MGLShapeSource` object; it
- is ignored when creating an `MGLComputedShapeSource` object.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/clustering/">Cluster point data</a> and <a href="https://docs.mapbox.com/ios/maps/examples/clustering-with-images/">Use images to cluster point data</a> examples to learn how to cluster point data with this `MGLShapeSourceOption`.
- */
-FOUNDATION_EXTERN MGL_EXPORT const MGLShapeSourceOption MGLShapeSourceOptionClustered;
-
-/**
- An `NSNumber` object containing an integer; specifies the radius of each
- cluster if clustering is enabled. A value of 512 produces a radius equal to
- the width of a tile. The default value is 50.
-
- This option only affects point features within an `MGLShapeSource` object; it
- is ignored when creating an `MGLComputedShapeSource` object.
- */
-FOUNDATION_EXTERN MGL_EXPORT const MGLShapeSourceOption MGLShapeSourceOptionClusterRadius;
-
-/**
- An `NSDictionary` object where the key is an `NSString`. The dictionary key will
- be the feature attribute key. The resulting attribute value is
- aggregated from the clustered points. The dictionary value is an `NSArray`
- consisting of two `NSExpression` objects.
-
- The first object determines how the attribute values are accumulated from the
- cluster points. It is an `NSExpression` with an expression function that accepts
- two or more arguments, such as `sum` or `max`. The arguments should be
- `featureAccumulated` and the previously defined feature attribute key. The
- resulting value is assigned to the specified attribute key.
-
- The second `NSExpression` in the array determines which
- attribute values are accessed from individual features within a cluster.
-
- ```swift
- let firstExpression = NSExpression(format: "sum:({$featureAccumulated, sumValue})")
- let secondExpression = NSExpression(forKeyPath: "magnitude")
- let clusterPropertiesDictionary = ["sumValue" : [firstExpression, secondExpression]]
-
- let options : [MGLShapeSourceOption : Any] = [.clustered : true,
- .clusterProperties: clusterPropertiesDictionary]
- ```
-
- This option corresponds to the
- <a href="https://www.mapbox.com/mapbox-gl-style-spec/#sources-geojson-clusterProperties"><code>clusterProperties</code></a>
- source property in the Mapbox Style Specification.
-
- This option only affects point features within an `MGLShapeSource` object; it
- is ignored when creating an `MGLComputedShapeSource` object.
- */
-FOUNDATION_EXTERN MGL_EXPORT const MGLShapeSourceOption MGLShapeSourceOptionClusterProperties;
-/**
- An `NSNumber` object containing an integer; specifies the maximum zoom level at
- which to cluster points if clustering is enabled. Defaults to one zoom level
- less than the value of `MGLShapeSourceOptionMaximumZoomLevel` so that, at the
- maximum zoom level, the shapes are not clustered.
-
- This option corresponds to the
- <a href="https://www.mapbox.com/mapbox-gl-style-spec/#sources-geojson-clusterMaxZoom"><code>clusterMaxZoom</code></a>
- source property in the Mapbox Style Specification.
-
- This option only affects point features within an `MGLShapeSource` object; it
- is ignored when creating an `MGLComputedShapeSource` object.
- */
-FOUNDATION_EXTERN MGL_EXPORT const MGLShapeSourceOption MGLShapeSourceOptionMaximumZoomLevelForClustering;
-
-/**
- An `NSNumber` object containing an integer; specifies the minimum zoom level at
- which to create vector tiles. The default value is 0.
-
- This option corresponds to the
- <a href="https://www.mapbox.com/mapbox-gl-style-spec/#sources-geojson-minzoom"><code>minzoom</code></a>
- source property in the Mapbox Style Specification.
- */
-FOUNDATION_EXTERN MGL_EXPORT const MGLShapeSourceOption MGLShapeSourceOptionMinimumZoomLevel;
-
-/**
- An `NSNumber` object containing an integer; specifies the maximum zoom level at
- which to create vector tiles. A greater value produces greater detail at high
- zoom levels. The default value is 18.
-
- This option corresponds to the
- <a href="https://www.mapbox.com/mapbox-gl-style-spec/#sources-geojson-maxzoom"><code>maxzoom</code></a>
- source property in the Mapbox Style Specification.
- */
-FOUNDATION_EXTERN MGL_EXPORT const MGLShapeSourceOption MGLShapeSourceOptionMaximumZoomLevel;
-
-/**
- An `NSNumber` object containing an integer; specifies the size of the tile
- buffer on each side. A value of 0 produces no buffer. A value of 512 produces a
- buffer as wide as the tile itself. Larger values produce fewer rendering
- artifacts near tile edges and slower performance. The default value is 128.
-
- This option corresponds to the
- <a href="https://www.mapbox.com/mapbox-gl-style-spec/#sources-geojson-buffer"><code>buffer</code></a>
- source property in the Mapbox Style Specification.
- */
-FOUNDATION_EXTERN MGL_EXPORT const MGLShapeSourceOption MGLShapeSourceOptionBuffer;
-
-/**
- An `NSNumber` object containing a double; specifies the Douglas-Peucker
- simplification tolerance. A greater value produces simpler geometries and
- improves performance. The default value is 0.375.
-
- This option corresponds to the
- <a href="https://www.mapbox.com/mapbox-gl-style-spec/#sources-geojson-tolerance"><code>tolerance</code></a>
- source property in the Mapbox Style Specification.
- */
-FOUNDATION_EXTERN MGL_EXPORT const MGLShapeSourceOption MGLShapeSourceOptionSimplificationTolerance;
-
-/**
- An `NSNumber` object containing a Boolean enabling or disabling calculating line distance metrics.
-
- Set this property to `YES` in order for the `MGLLineStyleLayer.lineGradient` property to have its intended effect.
- The default value is `NO`.
-
- This option corresponds to the
- <a href="https://www.mapbox.com/mapbox-gl-js/style-spec/#sources-geojson-lineMetrics"><code>lineMetrics</code></a>
- source property in the Mapbox Style Specification.
- */
-FOUNDATION_EXTERN MGL_EXPORT const MGLShapeSourceOption MGLShapeSourceOptionLineDistanceMetrics;
-
-/**
- `MGLShapeSource` is a map content source that supplies vector shapes to be
- shown on the map. The shapes may be instances of `MGLShape` or `MGLFeature`,
- or they may be defined by local or external
- <a href="http://geojson.org/">GeoJSON</a> code. A shape source is added to an
- `MGLStyle` object along with an `MGLVectorStyleLayer` object. The vector style
- layer defines the appearance of any content supplied by the shape source. You
- can update a shape source by setting its `shape` or `URL` property.
-
- `MGLShapeSource` is optimized for data sets that change dynamically and fit
- completely in memory. For large data sets that do not fit completely in memory,
- use the `MGLComputedShapeSource` or `MGLVectorTileSource` class.
-
- Each
- <a href="https://www.mapbox.com/mapbox-gl-style-spec/#sources-geojson"><code>geojson</code></a>
- source defined by the style JSON file is represented at runtime by an
- `MGLShapeSource` object that you can use to refine the map’s content and
- initialize new style layers. You can also add and remove sources dynamically
- using methods such as `-[MGLStyle addSource:]` and
- `-[MGLStyle sourceWithIdentifier:]`.
-
- Any vector style layer initialized with a shape source should have a `nil`
- value in its `sourceLayerIdentifier` property.
-
- ### Example
-
- ```swift
- var coordinates: [CLLocationCoordinate2D] = [
- CLLocationCoordinate2D(latitude: 37.77, longitude: -122.42),
- CLLocationCoordinate2D(latitude: 38.91, longitude: -77.04),
- ]
- let polyline = MGLPolylineFeature(coordinates: &coordinates, count: UInt(coordinates.count))
- let source = MGLShapeSource(identifier: "lines", features: [polyline], options: nil)
- mapView.style?.addSource(source)
- ```
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/clustering/">Cluster point data</a>, <a href="https://docs.mapbox.com/ios/maps/examples/clustering-with-images/">Use images to cluster point data</a>, and <a href="https://docs.mapbox.com/ios/maps/examples/live-data/">Add live data</a> examples to learn how to add data to your map using this `MGLSource` object.
- */
-MGL_EXPORT
-@interface MGLShapeSource : MGLSource
-
-#pragma mark Initializing a Source
-
-/**
- Returns a shape source with an identifier, URL, and dictionary of options for
- the source.
-
- This class supports the following options: `MGLShapeSourceOptionClustered`,
- `MGLShapeSourceOptionClusterRadius`,
- `MGLShapeSourceOptionMaximumZoomLevelForClustering`,
- `MGLShapeSourceOptionMinimumZoomLevel`, `MGLShapeSourceOptionMaximumZoomLevel`,
- `MGLShapeSourceOptionBuffer`, and
- `MGLShapeSourceOptionSimplificationTolerance`. Shapes provided by a shape
- source are not clipped or wrapped automatically.
-
- @param identifier A string that uniquely identifies the source.
- @param url An HTTP(S) URL, absolute file URL, or local file URL relative to the
- current application’s resource bundle.
- @param options An `NSDictionary` of options for this source.
- @return An initialized shape source.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/live-data/">
- Add live data</a> example to learn how to add live data to your map by
- updating the an `MGLShapeSource` object's `URL` property.
- */
-- (instancetype)initWithIdentifier:(NSString *)identifier URL:(NSURL *)url options:(nullable NSDictionary<MGLShapeSourceOption, id> *)options NS_DESIGNATED_INITIALIZER;
-
-/**
- Returns a shape source with an identifier, a shape, and dictionary of options
- for the source.
-
- This class supports the following options: `MGLShapeSourceOptionClustered`,
- `MGLShapeSourceOptionClusterRadius`,
- `MGLShapeSourceOptionMaximumZoomLevelForClustering`,
- `MGLShapeSourceOptionMinimumZoomLevel`, `MGLShapeSourceOptionMaximumZoomLevel`,
- `MGLShapeSourceOptionBuffer`, and
- `MGLShapeSourceOptionSimplificationTolerance`. Shapes provided by a shape
- source are not clipped or wrapped automatically.
-
- To specify attributes about the shape, use an instance of an `MGLShape`
- subclass that conforms to the `MGLFeature` protocol, such as `MGLPointFeature`.
- To include multiple shapes in the source, use an `MGLShapeCollection` or
- `MGLShapeCollectionFeature` object, or use the
- `-initWithIdentifier:features:options:` or
- `-initWithIdentifier:shapes:options:` methods.
-
- To create a shape from GeoJSON source code, use the
- `+[MGLShape shapeWithData:encoding:error:]` method.
-
- @param identifier A string that uniquely identifies the source.
- @param shape A concrete subclass of `MGLShape`
- @param options An `NSDictionary` of options for this source.
- @return An initialized shape source.
-
- #### Related examples
- See the <a href="https://docs.mapbox.com/ios/maps/examples/runtime-animate-line/">
- Animate a line</a> example to learn how to animate line data by continously
- updating an `MGLShapeSource`'s `shape` attribute.
- */
-- (instancetype)initWithIdentifier:(NSString *)identifier shape:(nullable MGLShape *)shape options:(nullable NSDictionary<MGLShapeSourceOption, id> *)options NS_DESIGNATED_INITIALIZER;
-
-/**
- Returns a shape source with an identifier, an array of features, and a dictionary
- of options for the source.
-
- This class supports the following options: `MGLShapeSourceOptionClustered`,
- `MGLShapeSourceOptionClusterRadius`,
- `MGLShapeSourceOptionMaximumZoomLevelForClustering`,
- `MGLShapeSourceOptionMinimumZoomLevel`, `MGLShapeSourceOptionMaximumZoomLevel`,
- `MGLShapeSourceOptionBuffer`, and
- `MGLShapeSourceOptionSimplificationTolerance`. Shapes provided by a shape
- source are not clipped or wrapped automatically.
-
- Unlike `-initWithIdentifier:shapes:options:`, this method accepts `MGLFeature`
- instances, such as `MGLPointFeature` objects, whose attributes you can use when
- applying a predicate to `MGLVectorStyleLayer` or configuring a style layer’s
- appearance.
-
- To create a shape from GeoJSON source code, use the
- `+[MGLShape shapeWithData:encoding:error:]` method.
-
- @param identifier A string that uniquely identifies the source.
- @param features An array of objects that conform to the MGLFeature protocol.
- @param options An `NSDictionary` of options for this source.
- @return An initialized shape source.
- */
-- (instancetype)initWithIdentifier:(NSString *)identifier features:(NSArray<MGLShape<MGLFeature> *> *)features options:(nullable NSDictionary<MGLShapeSourceOption, id> *)options;
-
-/**
- Returns a shape source with an identifier, an array of shapes, and a dictionary of
- options for the source.
-
- This class supports the following options: `MGLShapeSourceOptionClustered`,
- `MGLShapeSourceOptionClusterRadius`,
- `MGLShapeSourceOptionMaximumZoomLevelForClustering`,
- `MGLShapeSourceOptionMinimumZoomLevel`, `MGLShapeSourceOptionMaximumZoomLevel`,
- `MGLShapeSourceOptionBuffer`, and
- `MGLShapeSourceOptionSimplificationTolerance`. Shapes provided by a shape
- source are not clipped or wrapped automatically.
-
- Any `MGLFeature` instance passed into this initializer is treated as an ordinary
- shape, causing any attributes to be inaccessible to an `MGLVectorStyleLayer` when
- evaluating a predicate or configuring certain layout or paint attributes. To
- preserve the attributes associated with each feature, use the
- `-initWithIdentifier:features:options:` method instead.
-
- To create a shape from GeoJSON source code, use the
- `+[MGLShape shapeWithData:encoding:error:]` method.
-
- @param identifier A string that uniquely identifies the source.
- @param shapes An array of shapes; each shape is a member of a concrete subclass of MGLShape.
- @param options An `NSDictionary` of options for this source.
- @return An initialized shape source.
- */
-- (instancetype)initWithIdentifier:(NSString *)identifier shapes:(NSArray<MGLShape *> *)shapes options:(nullable NSDictionary<MGLShapeSourceOption, id> *)options;
-
-#pragma mark Accessing a Source’s Content
-
-/**
- The contents of the source. A shape can represent a GeoJSON geometry, a
- feature, or a collection of features.
-
- If the receiver was initialized using `-initWithIdentifier:URL:options:`, this
- property is set to `nil`. This property is unavailable until the receiver is
- passed into `-[MGLStyle addSource:]`.
-
- You can get/set the shapes within a collection via this property. Actions must
- be performed on the application's main thread.
- */
-@property (nonatomic, copy, nullable) MGLShape *shape;
-
-/**
- The URL to the GeoJSON document that specifies the contents of the source.
-
- If the receiver was initialized using `-initWithIdentifier:shape:options:`,
- this property is set to `nil`.
- */
-@property (nonatomic, copy, nullable) NSURL *URL;
-
-/**
- Returns an array of map features for this source, filtered by the given
- predicate.
-
- Each object in the returned array represents a feature for the current style
- and provides access to attributes specified via the `shape` property.
-
- Features come from tiled GeoJSON data that is converted to tiles internally,
- so feature geometries are clipped at tile boundaries and features
- may appear duplicated across tiles. For example, suppose this source contains a
- long polyline representing a road. The resulting array includes those parts of
- the road that lie within the map tiles that the source has loaded, even if the
- road extends into other tiles. The portion of the road within each map tile is
- included individually.
-
- Returned features may not necessarily be visible to the user at the time they
- are loaded: the style may lack a layer that draws the features in question. To
- obtain only _visible_ features, use the
- `-[MGLMapView visibleFeaturesAtPoint:inStyleLayersWithIdentifiers:predicate:]`
- or
- `-[MGLMapView visibleFeaturesInRect:inStyleLayersWithIdentifiers:predicate:]`
- method.
-
- @param predicate A predicate to filter the returned features. Use `nil` to
- include all features in the source.
- @return An array of objects conforming to the `MGLFeature` protocol that
- represent features in the source that match the predicate.
- */
-- (NSArray<id <MGLFeature>> *)featuresMatchingPredicate:(nullable NSPredicate *)predicate;
-
-/**
- Returns an array of map features that are the leaves of the specified cluster.
- ("Leaves" are the original points that belong to the cluster.)
-
- This method supports pagination; you supply an offset (number of features to skip)
- and a maximum number of features to return.
-
- @param cluster An object of type `MGLPointFeatureCluster` (that conforms to the `MGLCluster` protocol).
- @param offset Number of features to skip.
- @param limit The maximum number of features to return
-
- @return An array of objects that conform to the `MGLFeature` protocol.
- */
-- (NSArray<id <MGLFeature>> *)leavesOfCluster:(MGLPointFeatureCluster *)cluster offset:(NSUInteger)offset limit:(NSUInteger)limit;
-
-/**
- Returns an array of map features that are the immediate children of the specified
- cluster *on the next zoom level*. The may include features that also conform to
- the `MGLCluster` protocol (currently only objects of type `MGLPointFeatureCluster`).
-
- @param cluster An object of type `MGLPointFeatureCluster` (that conforms to the `MGLCluster` protocol).
-
- @return An array of objects that conform to the `MGLFeature` protocol.
-
- @note The returned array may contain the `cluster` that was passed in, if the next
- zoom level doesn't match the zoom level for expanding that cluster. See
- `-[MGLShapeSource zoomLevelForExpandingCluster:]`.
- */
-- (NSArray<id<MGLFeature>> *)childrenOfCluster:(MGLPointFeatureCluster *)cluster;
-
-/**
- Returns the zoom level at which the given cluster expands.
-
- @param cluster An object of type `MGLPointFeatureCluster` (that conforms to the `MGLCluster` protocol).
-
- @return Zoom level. This should be >= 0; any negative return value should be
- considered an error.
- */
-- (double)zoomLevelForExpandingCluster:(MGLPointFeatureCluster *)cluster;
-
-@end
-
-NS_ASSUME_NONNULL_END