Releases: mapbox/mapbox-maps-ios
Releases · mapbox/mapbox-maps-ios
v10.19.5
Mapbox Maps SDK for iOS | 11.18.1
Bug fixes 🐞
- Location Indicator Layer Ordering: Fixed an issue where the location indicator (puck) was rendered behind symbol layers with occlusion enabled. Previously, all layers with occlusion were placed after the last 3D layer for GL JS compatibility, which incorrectly placed them above the puck. The puck now correctly renders on top of occluded layers on 3D maps. (@alexey-romanov)
- Tile LOD (Level of Detail) Rendering: Fixed bearing compensation for parent tile nodes that caused lower-resolution ancestor tiles to appear at certain map rotations. The previous calculation scaled corrections by node size, resulting in excessive adjustments (up to 8 tile units) for parent nodes. The fix uses a fixed correction in tile coordinate units, allowing proper tile splitting at all zoom levels. (@pozdnyakov)
Dependencies
- Update MapboxCommon to
24.18.1. - Update MapboxCoreMaps to
11.18.1.
Dependency requirements:
- Compatible version of Xcode:
16.4
Mapbox Maps SDK for iOS | 11.19.0-beta.1
Features ✨ and improvements 🏁
- Raster Value Query API (Experimental): Added
queryRenderedRasterValuesAPI that allows querying the rendered value(s) of any raster array layer at a given screen coordinate. Returns pixel data for all bands, enabling use cases such as displaying weather data values, elevation readouts, or other raster-based information directly from the rendered map. (@Nelarius, @maios) - Offline Tile TTL Header Support: Added support for the
x-mapbox-offline-ttlHTTP header. When present, this header controls how long a cached tile remains valid for offline use, behaving as ifexpiry = now() + x-mapbox-offline-ttlwithmust-revalidate = true. This provides server-side control over offline tile freshness. (@Nelarius) - Text Scale Factor for Inline Images (Experimental): Images embedded within
text-fieldusing theimageexpression now properly scale according to the text scale factor setting, ensuring consistent sizing between text and inline images. (@woodroof) - Mixed Slot Order Support: Improved handling of slot ordering in style imports. Slots can now be interleaved in any order, allowing more flexible layer arrangements when composing styles from multiple imports. Note: duplicate slot names within a style are no longer supported and will trigger a warning. (@woodroof)
Bug fixes 🐞
- View Annotation Stability: Fixed multiple issues causing point View Annotations to flicker or disappear when their anchor point moves near or outside the viewport edge. View Annotations now remain partially visible at boundaries and no longer hide unexpectedly when the anchor moves off-screen. Also fixed an issue where the
avoid-symbol-layerscollision detection was incorrectly active even with an empty layer list. (@dserebriakov, @OdNairy) - Location Indicator Layer Ordering: Fixed an issue where the location indicator (puck) was rendered behind symbol layers with occlusion enabled. The puck now correctly renders above occluded layers on 3D maps. (@alexey-romanov)
- Building Layer Crash: Fixed a crash that could occur when rendering building layers with terrain exaggeration set to zero. (@aleksigron)
- Stretchable Icon Sizing: Fixed stretchable icons rendering at incorrect sizes when
icon-text-fitwas not used. Previously, stretch areas were calculated with invalid default values, causing oversized or mispositioned icons. (@ibesora) - Style Import Loading: Style import updates now only take effect after the imported style data has fully loaded, preventing visual inconsistencies during style transitions. (@zmiao)
- Remote TileStore Creation: Fixed an issue where TileStore creation could fail when using remote tile storage configurations due to path canonicalization occurring before service initialization. (@tatiana-yan)
- Tile LOD Rendering: Fixed bearing compensation for parent tile nodes that could cause lower-resolution ancestor tiles to appear incorrectly during map rotation. (@pozdnyakov)
Deprecations ⚠️
TileStore.create(path:)is now deprecated. UseTileStore.setRootPath(_:)instead to configure the tile store location. (@tatiana-yan)ResourceOptionstile store APIs are now deprecated. Use the dedicatedTileStoreconfiguration methods instead of passing tile store settings throughResourceOptions. (@pozdnyakov)
Dependencies
- Update MapboxCommon to
24.19.0-beta.1. - Update MapboxCoreMaps to
11.19.0-beta.1.
Dependency requirements:
- Compatible version of Xcode:
16.4
v11.18.0
Breaking changes ⚠️
- Remove experimental
LineLayer.lineCutoutWidthand changeLineLayer.lineCutoutOpacitydefault to 1.0
Features ✨ and improvements 🏁
- Add Standard Style color and 3D configuration options:
colorBuildings,colorCommercial,colorEducation,colorIndustrial,colorLand,colorMedical,show3dBuildings,show3dFacades,show3dLandmarks, andshow3dTrees. - Add experimental
DirectionalLight.shadowDrawBeforeLayerproperty to allow specifying the position in the layer stack for drawing shadows on the ground. - Add
ModelLayer.modelAllowDensityReductionproperty to disable density reduction in model layers. - [tile_store] Add method to set tilestore path to be used by default.
- Faster polygon triangulation for complex polygons.
- Add support for x-mapbox-offline-ttl http header
Bug fixes 🐞
- Fixed crash in camera API methods when given invalid coordinates (NaN or infinity values). Methods now return empty
CameraOptionsinstead of crashing. - Fix
userDatapayload foronSourceDataLoadedevent during GeoJSON partial update. - Fix placement stability in symbols with only text or only icons.
- Fixed missing images in imported styles with appearances modifying an image size.
- Fixed deadlock in SDK initialization
Dependencies
- Update MapboxCommon to
24.18.0. - Update MapboxCoreMaps to
11.18.0.
Dependency requirements:
- Compatible version of Xcode:
16.2
v11.18.0-beta.1
Breaking changes ⚠️
- Remove
line-cutout-widthand changeline-cutout-opacitydefault to 1.0
Features ✨ and improvements 🏁
- Add Standard Style color and 3D configuration options:
colorBuildings,colorCommercial,colorEducation,colorIndustrial,colorLand,colorMedical,show3dBuildings,show3dFacades,show3dLandmarks, andshow3dTrees. - Add experimental
shadowDrawBeforeLayerproperty to directional light to allow specifying the position in the layer stack for drawing shadows on the ground. - Add
ModelLayer.modelAllowDensityReductionproperty to disable density reduction in model layers. - Add method to set tile store path to be used by default.
- Faster polygon triangulation for complex polygons.
- General fixes and performance improvements.
Bug fixes 🐞
- Fix
userDatapayload foronSourceDataLoadedevent during GeoJSON partial update.
Dependencies
- Update MapboxCommon to
24.18.0-beta.1. - Update MapboxCoreMaps to
11.18.0-beta.1.
Dependency requirements:
- Compatible version of Xcode:
16.2
v11.17.1
Changes
- Internal fixes and performance improvements
Dependencies
- Update MapboxCommon to
24.17.1. - Update MapboxCoreMaps to
11.17.1:
Dependency requirements:
- Compatible version of Xcode:
16.2
v11.17.0
Features ✨ and improvements 🏁
- Promote Geofencing APIs to stable
- Enhanced Background Monitoring for geofencing:
- Maps SDK now utilizes the region monitor to support geofencing in the background. This improvement allows for more reliable tracking without needing the app to be actively open.
- Enhanced Background Monitoring for geofencing:
- Introduce
MapInitOptions.mapStyleproperty. Use it to initialize map with a custom style.
// Before
let options = MapInitOptions(styleURI: .standardSatellite)
let mapView = MapView(frame: view.bounds, mapInitOptions: options)
mapView.mapboxMap.setStyleImportConfigProperties(for: "basemap", configs: ["lightPreset": "dusk"])
// After:
let options = MapInitOptions(mapStyle: .standardSatellite(lightPreset: .dusk))
let mapView = MapView(frame: view.bounds, mapInitOptions: options)- Add
StyleReloadPolicyto control style reload behavior. UsereloadPolicy: .alwaysparameter inloadStyle()methods orMapStyleinitializers to always reload the style even when the URI or JSON matches the currently loaded style. Defaults to.onlyIfChangedfor optimal performance. - Introduce
ScaleBarViewOptions.unitsproperty supporting metric, imperial, and nautical units, replacing the booleanuseMetricUnitsproperty. - Add
fuelingStationModePointOfInterestLabelsconfiguration option to Mapbox Standard and Standard Satellite styles. Control the visibility of fuel station and electric charging station POI labels with options:default(shows both),fuel(fuel stations only),electric(charging stations only), ornone(hides both). - Add experimental
scaleFactorparameter toMapOptionsandMapSnapshotOptionsfor scaling icons and texts. Default value is1.0. - Add experimental
MapboxMap.setFeatureStateExpression(),removeFeatureStateExpression(), andresetFeatureStateExpressions()APIs to efficiently update feature state for multiple features at once using expressions. - Introduce experimental support for Appearances. The Appearances layer property defines sets of appearance objects used to quickly change the visual styling of a layer based on a condition using
feature-state. SeeAppearancesExamplefor further details. - Add experimental async variants of
MapboxMap.setLayerProperty(),setLayerPropertiesandupdateLayer(). line-emissive-strengthproperty is now data-driven, allowing different road types to be rendered in a single layer for improved performance- Promote
ModelLayerto stable. - Add
SymbolLayer.occlusionOpacityMode,SymbolLayer.iconColorBrightnessMax,SymbolLayer.iconColorBrightnessMin,SymbolLayer.iconColorContrastproperties. - Add
FillExtrusionLayer.castShadowsproperty. - Add
GeoJSONSource.minZoomproperty. - Add
RasterArraySource.volatileexperimental property. - Enable use of MapboxCommon's location manager in MapView.
- Support custom offline TTL header
Bug fixes 🐞
- Fix an issue where the location indicator could show incorrect direction in landscape orientation.
- Fix custom layer rendering crash
- Fix feature state clean up when feature state expressions are used
- Fix crash in config-dependent interpolate expression on style switching
- Fix for model manager deleting renderer resources on custom thread
- Fix config expression evaluation to properly check dependencies in nested value expressions
- Reset style lights when switching to a new style
- Fix crash in
OrnamentsManagerwhen setting attribution color. - Fix terrain crash on style switches.
- Fix line patterns not elevating properly on HD roads.
- Fix uint underflow in work limiting scheduler.
- Fix rendering artefacts when persistent buffer mapping is enabled
- Fix view-aligned symbols with road elevation being cutout
Optimizations and enhancements 🚀
- Optimized shadow rendering by limiting extra tile requests to zoom levels 16 and above, improving performance at zoom 15
- Optimized fill-extrusion rendering at zoom 17-22 by preventing bucket overscaling, significantly reducing tile cache evictions and CPU overhead
- Cleanup GeometryCollection usage in favor of FlatGeometries
- Implement zoom expression evaluation for
line-cutout-width. - Procedural building optimisations
- Fix GeoJSON tiled model disappearance in fast zoom situations.
- Fix user data handling in GeoJSON source with shared cache
- Optimize memory usage in GridIndex and related code.
- Memory improvements for vertex buffers.
- Avoid extra allocations in Formatted objects.
- Logging improvements to reduce duplication.
Dependencies
- Update MapboxCommon to
24.17.0. - Update MapboxCoreMaps to
11.17.0.
Dependency requirements:
- Compatible version of Xcode:
16.2
v11.17.0-rc.3
Features ✨ and improvements 🏁
- Promote Geofencing APIs to stable.
Bug fixes 🐞
- Fix feature state clean up when feature state expressions are used
Dependencies
- Update MapboxCommon to
24.17.0-rc.3. - Update MapboxCoreMaps to
11.17.0-rc.3.
Dependency requirements:
- Compatible version of Xcode:
16.2
v11.17.0-rc.2
Features ✨ and improvements 🏁
- Cleanup GeometryCollection usage in favor of FlatGeometries
- Procedural building optimisations
- Support custom offline TTL header
line-emissive-strengthproperty is now data-driven, allowing different road types to be rendered in a single layer for improved performance- Enhanced Background Monitoring for geofencing:
Maps SDK now utilizes the region monitor to support geofencing in the background. This improvement allows for more reliable tracking without needing the app to be actively open.
Bug fixes 🐞
- Fix crash in config-dependent interpolate expression on style switching
- Fix for model manager deleting renderer resources on custom thread
- Fixed config expression evaluation to properly check dependencies
- Reset style lights when switching to a new style
- Optimized shadow rendering by limiting extra tile requests to zoom levels 16 and above, improving performance at zoom 15
- Optimized fill-extrusion rendering at zoom 17-22 by preventing bucket overscaling, significantly reducing tile cache evictions and CPU overhead
Dependencies
- Update MapboxCommon to
24.17.0-rc.2. - Update MapboxCoreMaps to
11.17.0-rc.2:
Dependency requirements:
- Compatible version of Xcode:
16.2
v11.16.6
Changes
Internal fixes and performance improvements
Dependencies
- Update MapboxCommon to
24.16.6. - Update MapboxCoreMaps to
11.16.6.
Dependency requirements:
- Compatible version of Xcode:
16.2