Skip to content

Releases: mapbox/mapbox-maps-ios

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
v10.19.0 Pre-release
Pre-release

⚠️⚠️⚠️ 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

v11.6.0

16 Aug 07:45
Compare
Choose a tag to compare

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

  • Setting MapViewAnnotation.allowZElevate might cause crash.

Features ✨ and improvements 🏁

  • Expose new Standard Satellite style. Add new parameters to the Standard Style. With new Standard Style API it's possible to apply color themes on the map, hide/show road labels and show/hide 3D models. With new Standard Satellite style it's possible to show satellite imagery and also apply some configurations similar to Standard Style.
  • SwiftUI API is now marked as stable and recommended for production use 🎉
    • You no longer need to append import MapboxMaps with @_spi(Experimental) to use the SwiftUI implementation
    • Check out our SwiftUI User Guide for documentation on working with SwiftUI.
  • Expose experimental ClipLayer to remove 3D data (fill extrusions, landmarks, trees) and symbols.
  • CustomRasterSource API is updated, now CustomRasterSourceOptions accepts protocol CustomRasterSourceClient, enabling direct rendering into CustomRasterSource tiles. To achieve behavior similar to previous releases one may construct instance of CustomRasterSourceClient as shown below:
CustomRasterSourceOptions(tileStatusChangedFunction: { tileID, status in }) // Before
CustomRasterSourceOptions(clientCallback: CustomRasterSourceClient.fromCustomRasterSourceTileStatusChangedCallback { tileID, status in }) // Now
  • Introduce new ViewAnnotation.allowZElevate and MapViewAnnotation.allowZElevate properties. When set to true, the annotation will be positioned on the rooftops of buildings, including both fill extrusions and models.
  • Deprecate MapView.presentsWithTransaction and Map.presentsWithTransaction in favor of MapView.presentationTransactionMode and Map.presentationTransactionMode. The new default PresentationTransactionMode.automatic updates the presentsWithTransaction automatically when need to optimize performance. If you used the MapView.presentsWithTransaction with View Annotations, now you can safely remove this option:
Map {
  MapViewAnnotation(...)
}
.presentsWithTransaction(true) // Remove this

In case you need to preserve the old default behavior use presentationTransactionMode = .async:

mapView.presentationTransactionMode = .async // UIKit
Map().presentationTransactionMode(.async) // SwiftUI
  • MapboxMaps XCFramework structure now properly constructed for maccatalyst platform and code signing issues was eliminated.

Bug fixes 🐞

  • Fix bug where updating MapStyle didn't update the configuration properties.
  • Fix symbols with occlusion crashing on iOS simulators
  • Improved line-pattern precision
  • Fixed CustomRasterSource rendering when camera shows anti-meridian or multiple world copies.

Dependencies

  • Update MapboxCommon to 24.6.0.
  • Update MapboxCoreMaps to 11.6.0.

Dependency requirements:

  • Compatible version of Xcode: 15.2.0

v11.6.0-rc.1

01 Aug 12:39
Compare
Choose a tag to compare
v11.6.0-rc.1 Pre-release
Pre-release

Changes

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

  • ClipLayer property clipLayerTypes is not updated in runtime. The fix is expected to land in stable 11.6.0.

Features ✨ and improvements 🏁

  • Expose new Standard Satellite style. Add new parameters to the Standard Style. With new Standard Style API it's possible to apply color themes on the map, hide/show road labels and show/hide 3D models. With new Standard Satellite style it's possible to show satellite imagery and also apply some configurations similar to Standard Style.

Bug fixes 🐞

  • Fix bug where updating MapStyle didn't update the configuration properties.
  • Fix symbols with occlusion crashing on iOS simulators

Dependencies

  • Update MapboxCommon to 24.6.0-rc.1.
  • Update MapboxCoreMaps to 11.6.0-rc.1:

Dependency requirements:

  • Compatible version of Xcode: 15.2.0

v11.5.2

30 Jul 11:20
Compare
Choose a tag to compare

Bug fixes 🐞

  • Update CoreMaps to the 11.5.3 version to fix crash on iOS simulators when using symbols with occlusion.

Dependencies

  • Update MapboxCoreMaps to 11.5.3. Included changes:
    • Fix crash on iOS simulators when using symbols with occlusion
    • Fix color-theme colorization of emissive model colors
    • Adjust brightness when color-theme is applied on models
    • Fix Android local glyph rasterization to ensure the correct Typeface is used
    • Fix map freezing and huge memory consumption issue when using 3d models
    • Custom raster source fixes when camera shows antimeridian or multiple world copies
    • Fix shadow rendering issues with fill-extrusion-cutoff-fade-range property

Dependency requirements:

  • Compatible version of Xcode: 15.2.0

v11.6.0-beta.1

22 Jul 17:27
Compare
Choose a tag to compare
v11.6.0-beta.1 Pre-release
Pre-release

Changes

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

  • ClipLayer property clipLayerTypes is not updated in runtime. The fix is expected to land in 11.6.0-rc.1.

Features ✨ and improvements 🏁

  • SwiftUI API is now marked as stable and recommended for production use 🎉
    • You no longer need to append import MapboxMaps with @_spi(Experimental) to use the SwiftUI implementation
    • Check out our SwiftUI User Guide for documentation on working with SwiftUI.
  • Expose experimental ClipLayer to remove 3D data (fill extrusions, landmarks, trees) and symbols.
  • CustomRasterSource API updated, now CustomRasterSourceOptions accepts protocol CustomRasterSourceClient, enabling direct rendering into CustomRasterSource tiles. To achieve behavior similar to previous releases one may construct instance of CustomRasterSourceClient as shown below:
CustomRasterSourceOptions(tileStatusChangedFunction: { tileID, status in }) // Before
CustomRasterSourceOptions(clientCallback: CustomRasterSourceClient.fromCustomRasterSourceTileStatusChangedCallback { tileID, status in }) // Now
  • Introduce new ViewAnnotation.allowZElevate and MapViewAnnotation.allowZElevate properties. When set to true, the annotation will be positioned on the rooftops of buildings, including both fill extrusions and models.
  • Deprecate MapView.presentsWithTransaction and Map.presentsWithTransaction in favor of MapView.presentationTransactionMode and Map.presentationTransactionMode. The new default PresentationTransactionMode.automatic updates the presentsWithTransaction automatically when need to optimize performance. If you used the MapView.presentsWithTransaction with View Annotations, now you can safely remove this option:
Map {
  MapViewAnnotation(...)
}
.presentsWithTransaction(true) // Remove this

In case you need to preserve the old default behavior use presentationTransactionMode = .async:

mapView.presentationTransactionMode = .async // UIKit
Map().presentationTransactionMode(.async) // SwiftUI
  • MapboxMaps XCFramework structure now properly constructed for maccatalyst platform and code signing issues was eliminated.

Bug fixes 🐞

  • Improved line-pattern precision
  • Fixed CustomRasterSource rendering when camera shows anti-meridian or multiple world copies.

Dependencies

  • Update MapboxCommon to 24.6.0-beta.1.
  • Update MapboxCoreMaps to 11.6.0-beta.1:
Changelog

Features ✨ and improvements 🏁

  • Introduce clip layer to remove 3d data
  • Enable direct rendering into Custom Raster source tiles
  • Clip layer feature parity with gl-js
  • Add applyTransformFast function to aabb which calculates faster bounds for simple transforms.
  • Introduce a new 'allowZElevate' option in DynamicViewAnnotationOptions. When set to true, the annotation will be positioned on the rooftops of buildings, including both fill extrusions and models.

Bug fixes 🐞

  • Improved line-pattern precision
  • Custom raster source fixes when camera shows antimeridian or multiple world copies

Dependency requirements:

  • Compatible version of Xcode: 15.2.0

v11.5.1

05 Jul 15:02
Compare
Choose a tag to compare

Bug fixes 🐞

  • Revert symbol occlusion behaviour on terrain.

Dependencies

  • Update MapboxCoreMaps to 11.5.1.

Dependency requirements:

  • Compatible version of Xcode: 15.2.0