Skip to content

v11.17.0

Choose a tag to compare

@mapbox-github-ci-writer-public-1 mapbox-github-ci-writer-public-1 released this 04 Dec 18:15
· 60 commits to main since this release

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