Skip to content

Releases: mapbox/mapbox-maps-ios

v10.19.5

04 Feb 16:47

Choose a tag to compare

Changes

  • Update MapboxCommon to 23.12.0

Dependency requirements:

  • Compatible version of Xcode: 14.1.0

Mapbox Maps SDK for iOS | 11.18.1

30 Jan 12:28

Choose a tag to compare

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

29 Jan 15:12

Choose a tag to compare

Features ✨ and improvements 🏁

  • Raster Value Query API (Experimental): Added queryRenderedRasterValues API 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-ttl HTTP header. When present, this header controls how long a cached tile remains valid for offline use, behaving as if expiry = now() + x-mapbox-offline-ttl with must-revalidate = true. This provides server-side control over offline tile freshness. (@Nelarius)
  • Text Scale Factor for Inline Images (Experimental): Images embedded within text-field using the image expression 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-layers collision 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-fit was 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. Use TileStore.setRootPath(_:) instead to configure the tile store location. (@tatiana-yan)
  • ResourceOptions tile store APIs are now deprecated. Use the dedicated TileStore configuration methods instead of passing tile store settings through ResourceOptions. (@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

16 Jan 10:44

Choose a tag to compare

Breaking changes ⚠️

  • Remove experimental LineLayer.lineCutoutWidth and change LineLayer.lineCutoutOpacity default to 1.0

Features ✨ and improvements 🏁

  • Add Standard Style color and 3D configuration options: colorBuildings, colorCommercial, colorEducation, colorIndustrial, colorLand, colorMedical, show3dBuildings, show3dFacades, show3dLandmarks, and show3dTrees.
  • Add experimental DirectionalLight.shadowDrawBeforeLayer property to allow specifying the position in the layer stack for drawing shadows on the ground.
  • Add ModelLayer.modelAllowDensityReduction property 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 CameraOptions instead of crashing.
  • Fix userData payload for onSourceDataLoaded event 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

18 Dec 14:56

Choose a tag to compare

v11.18.0-beta.1 Pre-release
Pre-release

Breaking changes ⚠️

  • Remove line-cutout-width and change line-cutout-opacity default to 1.0

Features ✨ and improvements 🏁

  • Add Standard Style color and 3D configuration options: colorBuildings, colorCommercial, colorEducation, colorIndustrial, colorLand, colorMedical, show3dBuildings, show3dFacades, show3dLandmarks, and show3dTrees.
  • Add experimental shadowDrawBeforeLayer property to directional light to allow specifying the position in the layer stack for drawing shadows on the ground.
  • Add ModelLayer.modelAllowDensityReduction property 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 userData payload for onSourceDataLoaded event 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

12 Dec 08:13

Choose a tag to compare

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

04 Dec 18:15

Choose a tag to compare

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.
  • Introduce MapInitOptions.mapStyle property. 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 StyleReloadPolicy to control style reload behavior. Use reloadPolicy: .always parameter in loadStyle() methods or MapStyle initializers to always reload the style even when the URI or JSON matches the currently loaded style. Defaults to .onlyIfChanged for optimal performance.
  • Introduce ScaleBarViewOptions.units property supporting metric, imperial, and nautical units, replacing the boolean useMetricUnits property.
  • Add fuelingStationModePointOfInterestLabels configuration 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), or none (hides both).
  • Add experimental scaleFactor parameter to MapOptions and MapSnapshotOptions for scaling icons and texts. Default value is 1.0.
  • Add experimental MapboxMap.setFeatureStateExpression(), removeFeatureStateExpression(), and resetFeatureStateExpressions() 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. See AppearancesExample for further details.
  • Add experimental async variants of MapboxMap.setLayerProperty(), setLayerProperties and updateLayer().
  • line-emissive-strength property is now data-driven, allowing different road types to be rendered in a single layer for improved performance
  • Promote ModelLayer to stable.
  • Add SymbolLayer.occlusionOpacityMode, SymbolLayer.iconColorBrightnessMax, SymbolLayer.iconColorBrightnessMin, SymbolLayer.iconColorContrast properties.
  • Add FillExtrusionLayer.castShadows property.
  • Add GeoJSONSource.minZoom property.
  • Add RasterArraySource.volatile experimental 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 OrnamentsManager when 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

28 Nov 21:17

Choose a tag to compare

v11.17.0-rc.3 Pre-release
Pre-release

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

21 Nov 20:10

Choose a tag to compare

v11.17.0-rc.2 Pre-release
Pre-release

Features ✨ and improvements 🏁

  • Cleanup GeometryCollection usage in favor of FlatGeometries
  • Procedural building optimisations
  • Support custom offline TTL header
  • line-emissive-strength property 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

24 Nov 11:55

Choose a tag to compare

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