AI-generated Key Takeaways
-
GMSFeatureLayerrepresents a collection of features with the same type, allowing for client-side style overrides. -
Each feature type has a corresponding
GMSFeatureLayerto manage its features. -
The
styleproperty enables applying custom styling to all features within the layer using a block. -
Data-driven styling requires the Metal Framework, a valid map ID, and an applicable feature type, indicated by the
availableproperty. -
While the
initWithFeatureTypeinitializer exists for testing purposes, production instances should be created by the SDK.
GMSFeatureLayer
@interface GMSFeatureLayer<__covariant T : id <GMSFeature>> : NSObjectA class representing a collection of all features of the same GMSFeatureType, whose style can
be overridden on the client. Each GMSFeatureType will have one corresponding GMSFeatureLayer.
-
The feature type associated with this layer. All features associated with the layer will be of this type.
Declaration
Swift
var featureType: FeatureType { get }Objective-C
@property (nonatomic, readonly) GMSFeatureType _Nonnull featureType; -
Determines if the data-driven
GMSFeatureLayeris available. Data-driven styling requires the Metal Framework, a valid map ID and that the feature type be applied. IfNO, styling for theGMSFeatureLayerreturns to the default and events are not triggered.Declaration
Swift
var isAvailable: Bool { get }Objective-C
@property (nonatomic, readonly, getter=isAvailable) BOOL available; -
Styling block to be applied to all features in this layer.
The style block is applied to all visible features in the viewport when the setter is called, and is run multiple times for the subsequent features entering the viewport.
The function is required to be deterministic and return consistent results when it is applied over the map tiles. If any styling specs of any feature would be changed,
stylemust be set again. Changing behavior of the style block without calling thestylesetter will result in undefined behavior, including stale and/or shattered map renderings. See the example below:var selectedPlaceIDs = Set<String>() var style = FeatureStyle(fill: .red, stroke: .clear, strokeWidth: 0) layer.style = { feature in selectedPlaceIDs.contains(feature.placeID) ? style : nil } selectedPlaceIDs.insert("foo") style = FeatureStyle(fill: .clear, stroke: .blue, strokeWidth: 1.5) layer.style = { feature in selectedPlaceIDs.contains(feature.placeID) ? style : nil }Declaration
Swift
var style: ((T) -> FeatureStyle?)? { get set }Objective-C
@property (nonatomic, nullable) GMSFeatureStyle *_Nullable (^)(T _Nonnull) style; -
Create a feature layer instance for testing.
This method should be used for your unit tests only. In production,
GMSFeatureLayerinstances should only be created by the SDK.Declaration
Swift
convenience init(featureType: FeatureType)Objective-C
- (nonnull instancetype)initWithFeatureType:(nonnull GMSFeatureType)featureType; -
Unavailable
Declaration
Objective-C
- (instancetype)init NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE;