Skip to content

Releases: mapbox/mapbox-maps-ios

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

v11.5.0

04 Jul 12:12
Compare
Choose a tag to compare

Features ✨ and improvements 🏁

  • Use new LineJoin.none in conjunction with an image as a linePattern value to display repeated series of images along a line(e.g. dotted route line).
  • Expose text-occlusion-opacity, icon-occlusion-opacity, line-occlusion-opacity, model-front-cutoff, lineZOffset as experimental.
  • Add min/max/default values for most of the style properties documentation.
  • Disable memory cache for ProxyTiles
  • Add new line-join mode for improved line-pattern rendering
  • Use mainBundle path as default for assets
  • Enable ambient cache in the TileStore
  • Support clusterMinPoints for GeoJSON
  • Improve stability of symbol placement when using FollowPuckViewportState. by @evil159
  • Expose clusterMinPoints property for GeoJSONSource and for ClusterOptions by @aleksproger
  • Root properties (Atmosphere, Lights, Projection, Terrain, Transition) are now revertible for all styles. by @pjleonard37
  • Introduce raster particles rendering example. by @aleksproger
  • Experimental: The CustomRasterSource API has been updated. It no longer includes a cache and now provides notifications about alternative tiles that can be used when the ideal ones are unavailable.

Bug fixes 🐞

  • Fix Xcode 16 build issues. by @aleksproger
  • Fix double free error for Draco compressed models sharing indices
  • Port node transform support to fix quantization errors in meshopt landmarks
  • Fix shadows for v2 tiles
  • Fix tile rendering errors when the composited source tile components are overscaled
  • Fixed transparent areas in overlapped polygons of MultiPolygon feature
  • Fix crash on multiple style pack loading operations

Dependencies

  • Update MapboxCommon to 24.5.0.
  • Update MapboxCoreMaps to 11.5.0.

Dependency requirements:

  • Compatible version of Xcode: 15.2.0

v11.5.0-rc.1

20 Jun 16:00
Compare
Choose a tag to compare
v11.5.0-rc.1 Pre-release
Pre-release

Experimental API changes

  • The CustomRasterSource API has been updated. It no longer includes a cache and now provides notifications about alternative tiles that can be used when the ideal ones are unavailable.

Features ✨ and improvements 🏁

  • Expose text-occlusion-opacity, icon-occlusion-opacity, line-occlusion-opacity, model-front-cutoff, lineZOffset as experimental.
  • Add min/max/default values for most of the style properties.
  • Fix compilation of Examples and MapboxMaps in Xcode 16
  • Disable memory cache for ProxyTiles
  • Add new line-join mode for improved line-pattern rendering
  • Use mainBundle path as default for assets
  • Enable ambient cache in tile store
  • Support clusterMinPoints for GeoJSON

Bug fixes 🐞

  • Fix double free error for Draco compressed models sharing indices
  • Port node transform support to fix quantization errors in meshopt landmarks
  • Fix shadows for v2 tiles
  • Fix tile rendering errors when the composited source tile components are overscaled
  • Fixed transparent areas in overlapped polygons of MultiPolygon feature
  • Fix crash on multiple style pack loading operations

Dependencies

Dependency requirements:

  • Compatible version of Xcode: 15.2.0

v10.18.2

12 Jun 14:15
Compare
Choose a tag to compare

Features ✨ and improvements 🏁

  • Add support for building with Xcode 16 beta.

Dependencies

Dependency requirements:

  • Compatible version of Xcode: 14.1.0

v11.5.0-beta.1

12 Jun 08:40
Compare
Choose a tag to compare
v11.5.0-beta.1 Pre-release
Pre-release

Features ✨ and improvements 🏁

  • Improve stability of symbol placement when using FollowPuckViewportState. by @evil159
  • Expose clusterMinPoints property for GeoJSONSource and for ClusterOptions by @aleksproger
  • Root properties (Atmosphere, Lights, Projection, Terrain, Transition) are now revertible for all styles. by @pjleonard37
  • Introduce raster particles rendering example. by @aleksproger
  • Add support for building with Xcode 16 beta. by @aleksproger

Dependencies

Dependency requirements:

  • Compatible version of Xcode: 15.2.0

v10.18.1

31 May 12:25
Compare
Choose a tag to compare

Bug fixes 🐞

  • Fix a bug when billing event can be retried endlessly with 0 timeout in case network returns error.

Dependencies

Dependency requirements:

  • Compatible version of Xcode: 14.1.0

v10.18.0

23 May 09:42
Compare
Choose a tag to compare

Bug fixes 🐞

  • Fixed invalid circle order while using circle-sort-key. Fixed duplicate circles in static viewport mode.
  • Fixed a crash during style change.

Dependencies

Dependency requirements:

  • Compatible version of Xcode: 14.1.0

v11.4.0

22 May 16:09
Compare
Choose a tag to compare

Note

Live performance metrics collection. Mapbox Maps SDK v11.4.0 collects certain performance and feature usage counters so we can better benchmark the MapboxMaps library and invest in its performance. The performance counters have been carefully designed so that user-level metrics and identifiers are not collected.

Experimental API breaking changes ⚠️

In this release, we introduce the new Declarative Styling API for UIKit and SwiftUI. This change is based on MapContent introduced for SwiftUI; therefore, it has been restructured. The changes are compatible; however, in some rare cases, you may need to adjust your code.

by @persidskiy, @pjleonard37, & @aleksproger

  • [SwiftUI] MapContent now supports custom implementations, similar to SwiftUI views. The MapContent protocol now requires the var body: some MapContent implementation.
  • [SwiftUI] PointAnnotation and Puck3D property-setters that consumed fixed-length arrays reworked to use named properties or platform types for better readability:
// Before
PointAnnotation()
    .iconOffset([10, 20]) // x, y
    .iconTextFitPadding([1, 2, 3, 4]) // top, right, bottom, left
Puck3D()
    .modelScale([1, 2, 3]) // x, y, z

// After
PointAnnotation()
    .iconOffset(x: 10, y: 20)
    .iconTextFitPadding(UIEdgeInsets(top: 1, left: 4, bottom: 3, right: 2))
Puck3D()
    .modelScale(x: 1, y: 2, z: 3)
  • StyleImportConfiguration was removed from public API, the MapStyle now contains the configuration directly.

  • TransitionOptions is now a Swift struct rather than an Objective-C class.

  • All the style primitives can now be used as MapContent in SwiftUI.

@_spi(Experimental) MapboxMaps
Map {
    LineLayer(id: "traffic")
        .lineColor(.red)
        .lineWidth(2)
}

by @aleksproger

  • UIKit applications can now use the setMapStyleContent to use style primitives:
@_spi(Experimental) MapboxMaps
mapView.mapboxMap.setMapStyleContent {
    LineLayer(id: "traffic")
        .lineColor(.red)
        .lineWidth(2)
}

by @persidskiy

Features ✨ and improvements 🏁

  • Allow to assign slot to 2D and 3D location indicators. by @persidskiy
  • Allow observing start/stop event of CameraAnimator. by @maios
    You can observe start/stop event of CameraAnimator by using new CameraAnimationsManager APIs as shown below
    // Observe start event of any CameraAnimator owned by AnimationOwner.cameraAnimationsManager
    mapView.camera
      .onCameraAnimatorStarted
      .owned(by: .cameraAnimationsManager)
      .observe { cameraAnimator in
        // Handle camera animation started here.
      }
      .store(in: &cancelables)
    // Observe finished events of any CameraAnimator
    mapView.camera
      .onCameraAnimatorFinished
      .observe { animator in
        // Handle camera animation stopped here.
      }
      .store(in: &cancelables)
    You can also observe directly on an instance of CameraAnimator when using low-level camera APIs to create a custom animator
    // Declare an animator that changes the map's bearing
    let bearingAnimator = mapView.camera.makeAnimator(duration: 4, curve: .easeInOut) { (transition) in
      transition.bearing.toValue = -45
    }
    bearingAnimator.onStarted.observe {
      // Bearing animator has started.
    }.store(in: &cancelables)
  • Allow adding slots at runtime. by @aleksproger
  • Expose API to interact with style imports using Declarative Styling and regular imperative API. by @aleksproger
  • Expose StyleImport for declarative styling as MapStyleContent. by @aleksproger
  • Expose removeStyleImport, moveStyleImport, updateStyleImport, addStyleImport methods on StyleManager by @aleksproger
  • Allow assigning layerPosition to 2D and 3D location indicators in imperative API. by @aleksproger
  • Make Puck2D and Puck3D to be positioned according to relative layer position in declarative API instead of always top-most position. by @aleksproger
  • Add codesign for XCFrameworks. by @OdNairy
  • MapboxMap.loadStyle() and Snapshotter.loadStyle() now correctly call the completion closure. @persidskiy
  • Expose experimental RasterParticleLayer which is suitable for displaying precipitation or wind on the map @aleksproger
  • Obsoleted camera(for:) methods deprecation @aleksproger
  • Expose the list of added ViewAnnotation @maios

Dependencies

  • Update MapboxCommon to 24.4.0.
  • Update MapboxCoreMaps to 11.4.0

Dependency requirements:

  • Compatible version of Xcode: 15.2.0