Style Content
MGLSource
MGLSource
is an abstract base class for map content sources. A map content source supplies content to be shown on the map. A source is added to an MGLStyle
object along with an MGLForegroundStyleLayer
object. The foreground style layer defines the appearance of any content supplied by the source.
Each source defined by the style JSON file is represented at runtime by an MGLSource
object that you can use to refine the map’s content. You can also add and remove sources dynamically using methods such as -[MGLStyle addSource:]
and -[MGLStyle sourceWithIdentifier:]
.
Create instances of MGLShapeSource
, MGLComputedShapeSource
, MGLImageSource
, and the concrete subclasses of MGLTileSource
(MGLVectorTileSource
and MGLRasterTileSource
) in order to use MGLSource
’s properties and methods. Do not create instances of MGLSource
directly, and do not create your own subclasses of this class.
Declaration
Objective-C
@interface MGLSource : NSObject
Swift
class MGLSource : NSObject
MGLShapeSource
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 GeoJSON 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 geojson
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
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)
Declaration
Objective-C
@interface MGLShapeSource : MGLSource
Swift
class MGLShapeSource : MGLSource
MGLComputedShapeSource
MGLComputedShapeSource
is a map content source that supplies vector shapes, one tile at a time, to be shown on the map on demand. You implement a class conforming to the MGLComputedShapeSourceDataSource
protocol that returns instances of MGLShape
or MGLFeature
, then add a computed shape source to an MGLStyle
object along with an MGLVectorStyleLayer
object. The vector style layer defines the appearance of any content supplied by the computed shape source.
MGLComputedShapeSource
is similar to MGLShapeSource
but is optimized for data sets that change dynamically or are too large to fit completely in memory. It is also useful for data that is divided into tiles in a format other than Vector Tiles. For GeoJSON data, use the MGLShapeSource
class. For static tiles or Vector Tiles, use the MGLVectorTileSource
class.
You can add and remove sources dynamically using methods such as -[MGLStyle addSource:]
and -[MGLStyle sourceWithIdentifier:]
. This class cannot be represented in a style JSON file; you must add it ot the style at runtime.
Declaration
Objective-C
@interface MGLComputedShapeSource : MGLSource
Swift
class MGLComputedShapeSource : MGLSource
MGLTileSource
MGLTileSource
is a map content source that supplies map tiles to be shown on the map. The location of and metadata about the tiles are defined either by an option dictionary or by an external file that conforms to the TileJSON specification. A tile source is added to an MGLStyle
object along with one or more MGLRasterStyleLayer
or MGLVectorStyleLayer
objects. Use a style layer to control the appearance of content supplied by the tile source.
A tile source is also known as a tile set. To learn about the structure of a hosted tile set, view it in MapTiler Cloud’s Tilesets editor.
Create instances of MGLRasterTileSource
and MGLVectorTileSource
in order to use MGLTileSource
‘s properties and methods. Do not create instances of MGLTileSource
directly, and do not create your own subclasses of this class.
Declaration
Objective-C
@interface MGLTileSource : MGLSource
Swift
class MGLTileSource : MGLSource
MGLRasterTileSource
MGLRasterTileSource
is a map content source that supplies raster image tiles to be shown on the map. The location of and metadata about the tiles are defined either by an option dictionary or by an external file that conforms to the TileJSON specification. A raster tile source is added to an MGLStyle
object along with one or more MGLRasterStyleLayer
objects. Use a raster style layer to control the appearance of content supplied by the raster tile source.
Each raster
source defined by the style JSON file is represented at runtime by an MGLRasterTileSource
object that you can use to initialize new style layers. You can also add and remove sources dynamically using methods such as -[MGLStyle addSource:]
and -[MGLStyle sourceWithIdentifier:]
.
Example
let source = MGLRasterTileSource(identifier: "clouds", tileURLTemplates: ["https://example.com/raster-tiles/{z}/{x}/{y}.png"], options: [
.minimumZoomLevel: 9,
.maximumZoomLevel: 16,
.tileSize: 512,
.attributionInfos: [
MGLAttributionInfo(title: NSAttributedString(string: "© MapTiler"), url: URL(string: "https://maptiler.com"))
]
])
mapView.style?.addSource(source)
Declaration
Objective-C
@interface MGLRasterTileSource : MGLTileSource
Swift
class MGLRasterTileSource : MGLTileSource
MGLRasterDEMSource
MGLRasterDEMSource
is a map content source that supplies rasterized digital elevation model (DEM) tiles to be shown on the map. The location of and metadata about the tiles are defined either by an option dictionary or by an external file that conforms to the TileJSON specification. A raster DEM source is added to an MGLStyle
object along with one or more MGLHillshadeStyleLayer
objects. Use a hillshade style layer to control the appearance of content supplied by the raster DEM source.
Each raster-dem
source defined by the style JSON file is represented at runtime by an MGLRasterDEMSource
object that you can use to initialize new style layers. You can also add and remove sources dynamically using methods such as -[MGLStyle addSource:]
and -[MGLStyle sourceWithIdentifier:]
.
Currently, raster DEM sources only support the format used by Terrain-RGB.
Example
let terrainRGBURL = URL(string: "https://api.maptiler.com/tiles/terrain-rgb-v2/tiles.json")!
let source = MGLRasterDEMSource(identifier: "hills", configurationURL: terrainRGBURL)
mapView.style?.addSource(source)
Declaration
Objective-C
@interface MGLRasterDEMSource : MGLRasterTileSource
Swift
class MGLRasterDEMSource : MGLRasterTileSource
MGLVectorTileSource
MGLVectorTileSource
is a map content source that supplies tiled vector data in Vector Tile format to be shown on the map. The location of and metadata about the tiles are defined either by an option dictionary or by an external file that conforms to the TileJSON specification. A vector tile source is added to an MGLStyle
object along with one or more MGLVectorStyleLayer
objects. A vector style layer defines the appearance of any content supplied by the vector tile source.
MGLVectorTileSource
is optimized for data sets that are too large to fit completely in memory, such as vector tile sets or data sets managed in MapTiler Cloud. For GeoJSON data, use the MGLShapeSource
class. For tiled data that changes dynamically, the MGLComputedShapeSource
class may be a suitable alternative.
Each vector
source defined by the style JSON file is represented at runtime by an MGLVectorTileSource
object that you can use to initialize new style layers. You can also add and remove sources dynamically using methods such as -[MGLStyle addSource:]
and -[MGLStyle sourceWithIdentifier:]
.
Within each vector tile, each geometric coordinate must lie between −1 × extent and (extent × 2) − 1, inclusive. Any vector style layer initialized with a vector tile source must have a non-nil
value in its sourceLayerIdentifier
property.
Commonly used vector tile sources include Streets, Terrain, and Traffic.
Example
let source = MGLVectorTileSource(identifier: "pois", tileURLTemplates: ["https://example.com/vector-tiles/{z}/{x}/{y}.mvt"], options: [
.minimumZoomLevel: 9,
.maximumZoomLevel: 16,
.attributionInfos: [
MGLAttributionInfo(title: NSAttributedString(string: "© MapTiler"), url: URL(string: "https://maptiler.com"))
]
])
mapView.style?.addSource(source)
Declaration
Objective-C
@interface MGLVectorTileSource : MGLTileSource
Swift
class MGLVectorTileSource : MGLTileSource
MGLImageSource
MGLImageSource
is a content source that is used for a georeferenced raster image to be shown on the map. The georeferenced image scales and rotates as the user zooms and rotates the map. Images may also be used as icons or patterns in a style layer. To register an image for use as an icon or pattern, use the -[MGLStyle setImage:forName:]
method. To configure a point annotation’s image, use the MGLAnnotationImage
class.
The geographic location of the raster image content, supplied with MGLCoordinateQuad
, can be non-axis aligned. MGLImageSource
supports raster content from NSURL
, NSImage
(macOS), or UIImage
(iOS). An image source is added to an MGLStyle
object along with one or more MGLRasterStyleLayer
objects. Use a raster style layer to control the appearance of content supplied by the image source.
Each image
source defined by the style JSON file is represented at runtime by an MGLImageSource
object that you can use to initialize new style layers. You can also add and remove sources dynamically using methods such as -[MGLStyle addSource:]
and -[MGLStyle sourceWithIdentifier:]
.
Example
let coordinates = MGLCoordinateQuad(
topLeft: CLLocationCoordinate2D(latitude: 46.437, longitude: -80.425),
bottomLeft: CLLocationCoordinate2D(latitude: 37.936, longitude: -80.425),
bottomRight: CLLocationCoordinate2D(latitude: 37.936, longitude: -71.516),
topRight: CLLocationCoordinate2D(latitude: 46.437, longitude: -71.516))
let source = MGLImageSource(identifier: "radar", coordinateQuad: coordinates, url: URL(string: "https://www.mapbox.com/mapbox-gl-js/assets/radar.gif")!)
mapView.style?.addSource(source)
Declaration
Objective-C
@interface MGLImageSource : MGLSource
Swift
class MGLImageSource : MGLSource
iOS SDK
Examples
SDK JS Reference
- Annotations
- Appendices
- NSExpression(MGLAdditions)
- NSValue(MGLAdditions)
- NSValue(MGLCircleStyleLayerAdditions)
- NSValue(MGLFillExtrusionStyleLayerAdditions)
- NSValue(MGLFillStyleLayerAdditions)
- NSValue(MGLHillshadeStyleLayerAdditions)
- NSValue(MGLLineStyleLayerAdditions)
- NSValue(MGLRasterStyleLayerAdditions)
- NSValue(MGLSymbolStyleLayerAdditions)
- MGLAccountManager
- MGLAnnotationImage
- MGLAnnotationView
- MGLAttributedExpression
- MGLAttributionInfo
- MGLBackgroundStyleLayer
- MGLCircleStyleLayer
- MGLClockDirectionFormatter
- MGLCompassButton
- MGLCompassDirectionFormatter
- MGLComputedShapeSource
- MGLCoordinateFormatter
- MGLDistanceFormatter
- MGLFillExtrusionStyleLayer
- MGLFillStyleLayer
- MGLForegroundStyleLayer
- MGLHeatmapStyleLayer
- MGLHillshadeStyleLayer
- MGLImageSource
- MGLLight
- MGLLineStyleLayer
- MGLLoggingConfiguration
- MGLMapCamera
- MGLMapSnapshot
- MGLMapSnapshotOptions
- MGLMapSnapshotOverlay
- MGLMapSnapshotter
- MGLMapView
- MGLMultiPoint
- MGLMultiPolygon
- MGLMultiPolyline
- MGLNetworkConfiguration
- MGLOfflinePack
- MGLOfflineStorage
- MGLPointAnnotation
- MGLPointCollection
- MGLPolygon
- MGLPolyline
- MGLRasterStyleLayer
- MGLRasterTileSource
- MGLShape
- MGLShapeCollection
- MGLShapeOfflineRegion
- MGLShapeSource
- MGLSource
- MGLStyle
- MGLStyleLayer
- MGLSymbolStyleLayer
- MGLTilePyramidOfflineRegion
- MGLTileSource
- MGLUserLocation
- MGLUserLocationAnnotationView
- MGLUserLocationAnnotationViewStyle
- MGLVectorStyleLayer
- MGLVectorTileSource
- MGLAnnotationVerticalAlignment
- MGLAnnotationViewDragState
- MGLAttributionInfoStyle
- MGLCirclePitchAlignment
- MGLCircleScaleAlignment
- MGLCircleTranslationAnchor
- MGLDEMEncoding
- MGLErrorCode
- MGLFillExtrusionTranslationAnchor
- MGLFillTranslationAnchor
- MGLHillshadeIlluminationAnchor
- MGLIconAnchor
- MGLIconPitchAlignment
- MGLIconRotationAlignment
- MGLIconTextFit
- MGLIconTranslationAnchor
- MGLLightAnchor
- MGLLineCap
- MGLLineJoin
- MGLLineTranslationAnchor
- MGLLoggingLevel
- MGLMapDebugMaskOptions
- MGLOfflinePackState
- MGLOrnamentPosition
- MGLOrnamentVisibility
- MGLRasterResamplingMode
- MGLResourceKind
- MGLSymbolPlacement
- MGLSymbolZOrder
- MGLTextAnchor
- MGLTextJustification
- MGLTextPitchAlignment
- MGLTextRotationAlignment
- MGLTextTransform
- MGLTextTranslationAnchor
- MGLTextWritingMode
- MGLTileCoordinateSystem
- MGLUserTrackingMode
- Formatters
- Geometry
- Location Updates
- Maps
- Offline Maps
- Other Categories
- Other Classes
- Other Constants
- Other Enumerations
- Other Functions
- Other Protocols
- Other Structures
- Other Type Definitions
- Primitive Shapes
- MGLAnnotation
- MGLCalloutView
- MGLCalloutViewDelegate
- MGLCluster
- MGLComputedShapeSourceDataSource
- MGLFeature
- MGLLocationManager
- MGLLocationManagerDelegate
- MGLMapSnapshotterDelegate
- MGLMapViewDelegate
- MGLOfflineRegion
- MGLOfflineStorageDelegate
- MGLOverlay
- MGLStylable
- MGLCoordinateBounds
- MGLCoordinateQuad
- MGLCoordinateSpan
- MGLOfflinePackProgress
- MGLSphericalPosition
- MGLTransition
- Style Content
- Style Layers
- Style Primitives
- Styling the Map
- MGLCoordinateBounds
- MGLCoordinateQuad
- MGLCoordinateSpan
- MGLOfflinePackProgress
- MGLSphericalPosition
- MGLTransition
- User Interaction
- Customizing Fonts
- Information for Style Authors
- Gesture Recognizers
- Info.plist Keys
- Migrating to Expressions
- Predicates and expressions
- Tile URL Templates
- Working with GeoJSON Data