Skip to content

Releases: mapbox/mapbox-maps-ios

v11.8.0

11 Nov 13:14
Compare
Choose a tag to compare

Features ✨ and improvements 🏁

Important

Configuring Mapbox's secret token is no longer required when installing our SDKs.

  • ✨ Introduce experimental Geofencing API. Please take a look at example showcase of Geofencing:
    • GeofencingPlayground A tappable map interface where users can generate an isochrone-based geometry, which can then be added as a custom geofence.
    • GeofencingUserLocation A geofence surrounding the user's location, with a dynamic highlight color that changes to indicate specific geofence events.
  • Refactor of the experimental Featuresets and Interactions API:
    • InteractiveFeature is renamed to FeaturesetFeature.
    • Introduce new StandardPoiFeature, StandardBuildingsFeature, StandardPlaceLabelsFeature.
    • Introduce new FeaturesetDescriptor.
  • Generate MapStyle.standard and MapStyle.standardSatellite from the style specification. Added the new StandardFont type to represent the font family in these configurations. If you used a string variable, please update your code as the shown below:
    // Old:
    Map().mapStyle(.standard(font: fontValue))
    Map().mapStyle(.standard(font: "lato"))
    // New:
    Map().mapStyle(.standard(font: StandardFont(rawValue: fontValue)))
    Map().mapStyle(.standard(font: .lato))
    Map().mapStyle(.standard(font: "lato"))
  • Introduce experimental property MapboxMap.styleGlyphURL. Use this property to apply custom fonts to the map at runtime, without modifying the base style.
  • Make fill-extrusion-emissive-strength property data-driven
  • Dispatch view annotations update before rendering
  • Skip rendering landmarks when the camera is inside them

Bug fixes 🐞

  • Fix a console warning (Source x missing for layer x) when using annotation managers.
  • [SwiftUI] Fixed crash when ForEvery was used with duplicated IDs.
  • Improve zooming performance on dynamic Standard terrain and optimize terrain re-rendering performance on e.g route line line-trim-offset change.
  • Respect polygons with holes on querying rendered features
  • Fix self-overlap of line corners when large line-width is used
  • Adjust conflation intersection test padding to fix disappearing fill-extrusion
  • Fix TileCover bug with polygon horizontal edges
  • Fix a bug with image dependent paint properties not getting a correct value after image become available
  • Fix for fill-extrusion replacement reconciliation
  • Clear tile pyramid on color theme change before the tiles are updated
  • Fix missing images notifications for images within coalesce expression when other images in coalesce are present. Image expressions with two arguments are no longer being considered present if only second image is present.
  • Fix crash on style pack load when no access token is set
  • Fix crash on TerrainRenderer when using snapshotter
  • Fix crash on re-creation of a custom raster source when different options are provided
  • Return parsing errors if runtime added style import JSON is not valid
  • Fix missing models in rendering result if reduceMemoryUse is called before taking snapshot
  • Fix the incorrect behaviour when using symbol-z-oder property
  • Fix raster-particle trail discontinuity at the antimeridian
  • Fix the bug when MapView would ignore the new bounds size if there are more than a single resizing event in the animation.
  • Encapsulate config expression in assertion expression when expected return type is known

💫️ Other

  • Resolve autoMaxZoom for feature
  • Fix texture gather for shadows not being selected correctly by default
  • Performance improvements for runtime-added images

Dependencies

  • Update MapboxCommon to 24.8.0.
  • Update MapboxCoreMaps to 11.8.0

Dependency requirements:

  • Compatible version of Xcode: 15.2.0

v11.8.0-rc.1

24 Oct 11:53
Compare
Choose a tag to compare
v11.8.0-rc.1 Pre-release
Pre-release

Features ✨ and improvements 🏁

  • [geofencing][billing] Trigger billing event for geofencing

Bug fixes 🐞

  • Fix the bug when MapView would ignore the new bounds size if there are more than a single resizing event in the animation.
  • Encapsulate config expression in assertion expression when expected return type is known
  • [geofencing] Fix GeofencingUtils.isActive in case we did not start geofencing

💫️ Other

  • Resolve autoMaxZoom for feature
  • Fix texture gather for shadows not being selected correctly by default
  • Performance improvements for runtime-added images

Dependencies

  • Update MapboxCommon to 24.8.0-rc.1.
  • Update MapboxCoreMaps to 11.8.0-rc.1:

Dependency requirements:

  • Compatible version of Xcode: 15.2.0

v11.8.0-beta.1

15 Oct 08:49
Compare
Choose a tag to compare
v11.8.0-beta.1 Pre-release
Pre-release

Features ✨ and improvements 🏁

  • Introduce experimental Geofencing API. Implementation example: GeofencingExample.swift

  • Refactor of the experimental Featuresets and Interactions API:

    • InteractiveFeature is renamed to FeaturesetFeature.
    • Introduce new StandardPoiFeature, StandardBuildingsFeature, StandardPlaceLabelsFeature.
    • Introduce new FeaturesetDescriptor.
  • Generate MapStyle.standard and MapStyle.standardSatellite from the style specification. Added the new StandardFont type to represent the font family in these configurations. If you used a string variable, update your code:

// Old:
Map().mapStyle(.standard(font: fontValue))
Map().mapStyle(.standard(font: "lato"))
/// New:
Map().mapStyle(.standard(font: StandardFont(rawValue: fontValue)))
Map().mapStyle(.standard(font: .lato))
Map().mapStyle(.standard(font: "lato"))
  • Introduce experimental property MapboxMap.styleGlyphURL. Use this property to apply custom fonts to the map at runtime, without modifying the base style.
  • Introduce new styleGlyphURL property.
  • Make fill-extrusion-emissive-strength property data-driven
  • Dispatch view annotations update before rendering
  • Skip rendering landmarks when the camera is inside them

Bug fixes 🐞

  • Fix a console warning (Source x missing for layer x) when using annotation managers.
  • [SwiftUI] Fixed crash when ForEvery was used with duplicated IDs.
  • Improve zooming performance on dynamic Standard terrain and optimize terrain re-rendering performance on e.g routeline line-trim-offset change.
  • Respect polygons with holes on querying rendered features
  • Fix self-overlap of line corners when large line-width is used
  • Adjust conflation intersection test padding to fix disappearing fill-extrusion
  • Fix TileCover bug with polygon horizontal edges
  • Fix a bug with image dependent paint properties not getting a correct value after image become available
  • Fix for fill-extrusion replacement reconciliation
  • Clear tile pyramid on color theme change before the tiles are updated
  • Fix missing images notifications for images within coalesce expression when other images in coalesce are present. Image expressions with two arguments are no longer being considered present if only second image is present.
  • Fix crash on style pack load when no access token is set
  • Fix crash in TerrainRenderer when using snapshotter
  • Fix crash on re-creation of a custom raster source when different options are provided
  • Return parsing errors if runtime added style import JSON is not valid
  • Fix missing models in rendering result if reduceMemoryUse is called before taking snapshot
  • Fix the incorrect behaviour when using symbol-z-oder property
  • Fix raster-particle trail discontinuity at the antimeridian

Dependencies

  • Update MapboxCommon to 24.8.0-beta.1.
  • Update MapboxCoreMaps to 11.8.0-beta.1:
    • Changelog

Dependency requirements:

  • Compatible version of Xcode: 15.2.0

v11.7.1

10 Oct 17:30
Compare
Choose a tag to compare

Bug fixes 🐞

  • Respect holes in polygons when querying rendered features.

Dependencies

  • Update MapboxCoreMaps to 11.7.1.
  • Update MapboxCommon to 24.7.1.

v11.2.1

10 Oct 08:29
Compare
Choose a tag to compare

Features ✨ and improvements 🏁

  • Xcode 16 compatibility

Dependencies

  • Update MapboxCoreMaps to 11.7.0.
  • Update MapboxCommon to 24.7.0.

Dependency requirements:

  • Compatible version of Xcode: 15.2.0

Full Changelog: v11.2.0...v11.2.1

v11.7.0

27 Sep 12:17
Compare
Choose a tag to compare

Features ✨ and improvements 🏁

  • Fix the bug where displaying ViewAnnotation and setting a feature state simultaneously could result in an unapplied feature state.
  • Remove MapboxMaps-Swift.h from the MapboxMaps framework, this will disable ObjC interop for MapboMaps.

Dependencies

  • Update MapboxCoreMaps to 11.7.0.
  • Update MapboxCommon to 24.7.0.

Dependency requirements:

  • Compatible version of Xcode: 15.2.0

v10.19.0

24 Sep 15:14
Compare
Choose a tag to compare

⚠️⚠️⚠️ Known Issues ⚠️⚠️⚠️

  • MBXCLLiveTrackingClient might cause crashes, the problem will be fixed in the next 10.19.1 patch release.
    The crashing code is unused. The 10.19.0 is all good, no need for the 10.19.1

Features ✨ and improvements 🏁

  • Remove bitcode from framework binaries across the stack, thus unblocking AppStore submissions for client applications.

Dependencies

  • Update MapboxCommon to 23.11.0.
  • Update MapboxCoreMaps to 10.19.1.
  • Update MapboxMobileEvents to 2.0.0.

Dependency requirements:

  • Compatible version of Xcode: 14.1.0

v11.7.0-rc.1

16 Sep 11:34
Compare
Choose a tag to compare
v11.7.0-rc.1 Pre-release
Pre-release

Features ✨ and improvements 🏁

  • Add experimental FillExtrusionLayer.fillExtrusionLineWidth that can switches fill extrusion rendering into wall rendering mode. Use this property to render the feature with the given width over the outlines of the geometry.

Bug fixes 🐞

  • Fix the incorrect behaviour when using symbol-z-oder property (#293)
  • Fix retrieval of tilesets for 3d tiles in offline mode (#289)
  • Fix rendering errors of patterns on high zoom levels (#249)
  • Relayout layers on source layer change (#201)

💫️ Other

  • Fix retrieval of tilesets for 3d tiles in offline mode (#294)
  • Improve performance with density limit for fill-extrusion-flood-light* (#288)

v11.6.1

10 Sep 10:50
Compare
Choose a tag to compare

Bug fixes 🐞

  • Fix for offline retrieval of 3D tiles for standard style.

Dependencies

  • Update MapboxCommon to 24.6.1.
  • Update MapboxCoreMaps to 11.6.1.

Dependency requirements:

  • Compatible version of Xcode: 15.2.0

v11.7.0-beta.1

03 Sep 14:33
Compare
Choose a tag to compare
v11.7.0-beta.1 Pre-release
Pre-release

⚠️⚠️⚠️ Note ⚠️⚠️⚠️

This version contains update Turf to 3.0.0 version. That version introduce breaking change – there is no more RawRepresentable conformances for Array and Dictionary system types. If you were relying on the init(rawValue:) function or rawValue property you will find migration instructions in the changelog.

Features ✨ and improvements 🏁

  • Expose data-driven properties on annotation managers. Now it's possible to set data-driven properties globally on annotation manager and specify per-annotation overrides.
    Previously user had to specify those properties on each annotation and couldn't specify them globally.

  • Added new experimental interactive features API. Interactive features allow you to add interactions to both layers, the map itself, or the features defined in the imported styles, such as Standard Style. The new API supersedes the Map Content Gesture API and makes it cross-platform.

  • Rename the MapContentGestuereContext to the InteractionContext

  • Introduce a new RenderedQueryGeometry type to replace multiple MapboxMaps.queryRenderedFeatures overloads.

  • [SwiftUI] Introduce new experimental FeatureState primitive.

  • Expose data-driven properties on annotation managers. Now it's possible to set data-driven properties globally on annotation manager and specify per-annotation overrides.
    Previosuly user had to specify those properties on each annotation and couldn't specify them globally

CircleAnnotationGroup(circles, id: \.id) { circle in
    CircleAnnotation(centerCoordinate: circle.coordinate)
      .circleColor(circle.color)
      .circleRadius(10)
      .circleStrokeWidth(1)
      .circleStrokeColor(.black)
}

The problem with the above approach is that most of the properties are just duplicated for each annotation, which can lead to large memory overhead in case of big datasets. In order to solve this issue and provide more versatile API the following approach is now possible, which is visually identical to previous snippet, but more performant.

CircleAnnotationGroup(circles, id: \.id) { circle in
    CircleAnnotation(centerCoordinate: circle.coordinate)
      .circleColor(circle.color)
}
.circleRadius(10)
.circleStrokeWidth(1)
.circleStrokeColor(.black)

Same applies for imperative API. In this case each even annotation will have random color, but others will use the global default specified in the annotation manager.

let circleAnnotationManager = mapView.annotations.makeCircleAnnotationManager()
var annotations = [CircleAnnotation]()
for i in 0...2000 {
  var annotation = CircleAnnotation(centerCoordinate: .random)
  if i % 2 == 0 { annotation.circleColor = StyleColor(.random) }
  annotations.append(annotation)
}
circleAnnotationManager.circleColor = .blue
  • Improve memory reclamation behavior when using partial GeoJSON update API.

  • Update Turf to 3.0.0 version. That version introduce breaking change – there is no more RawRepresentable conformances for Array and Dictionary system types. If you were relying on the init(rawValue:) function or rawValue property, you can use the substitution instead:

    • init(rawValue:) -> init(turfRawValue:)
    • rawValue -> turfRawValue
  • Remove experimental model-front-cutoff property from ModelLayer

  • Expose experimental ClipLayer.clipLayerScope, SymbolLayer.symbolElevationReference and SymbolLayer.symbolZOffset.

  • Most of public value types was marked as Sendable now, to facilitate adoption of Swift 6 concurrency model for SDK clients.

  • autoMaxZoom property exposed for GeoJSONSource to fix rendering issues with FillExtrusionLayer in some cases

Dependencies

Dependency requirements:

  • Compatible version of Xcode: 15.2.0