Skip to content

Releases: mapbox/mapbox-maps-ios

v11.4.0-beta.2

02 May 12:12
Compare
Choose a tag to compare
v11.4.0-beta.2 Pre-release
Pre-release

Changes

  • MapboxMap.loadStyle() and Snapshotter.loadStyle() behaviour is rolled back to pre 11.4.0-beta.1 state by @persidskiy

⚠️ Known Issues ⚠️

  • Setting a RasterLayer’s rasterColor property with an expression will block the layer from rendering. This issue will be resolved in v11.4.0-rc.1.

Dependencies

Dependency requirements:

  • Compatible version of Xcode: 15.2.0

v11.4.0-beta.1

25 Apr 01:25
Compare
Choose a tag to compare
v11.4.0-beta.1 Pre-release
Pre-release

Changes

⚠️ Known Issues ⚠️

  • In v11.4.0-beta.1, setting a RasterLayer’s rasterColor property with an expression will block the layer from rendering. This issue will be resolved in v11.4.0-rc.1.

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.

Features ✨ and improvements 🏁

  • 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

  • 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

Dependencies

Dependency requirements:

  • Compatible version of Xcode: 15.2.0

Maps SDK v11.3.0

11 Apr 10:30
Compare
Choose a tag to compare

Note

This release contains fixes to the Privacy Manifest. Upgrade to avoid issues in the App Store app submission starting from May 1st.

Features ✨ and improvements 🏁

Bug fixes 🐞

  • Fix the issue with invalid privacy manifest #2145
  • Fix offline tiles fetching regression introduced in the 11.3.0-beta.1
  • Fix a crash that could occur on Metal when the texture object would outlive the renderer
  • Fix a bug where specifying a large negative value for padding resulted in the returned zoom value being NaN
  • Fix location indicator models rendering issue with globe projection
  • Fix taps propagation on ViewAnnotation and MapViewAnnotation (4709720 by @aleksproger).
  • Fix layer paint property update with feature state changes, especially if the paint property value data-driven by brightness or zoom
  • Fix snapshotter race conditions to ensure new request could effectively trigger map rendering
  • Fix raster array band updates glitches during the camera zoom animation
  • Reload vector source tiles when language or worldview setting is changed.
  • Apply config expression to atmosphere properties.
  • Fix map freezing when using queryRenderedFeatures with 3d models in mercator projection
  • Reduce time spent on line gradient updates on the render thread
  • [reachability] Fix reachability status getting stuck with ReachableViaWWAN status if HTTP requests completed at the same time as network reported being disconnected

Dependencies

  • Update MapboxCoreMaps to 11.3.0.
  • Update MapboxCommon to 24.3.1.

Dependency requirements:

  • Compatible version of Xcode: 15.2.0

v10.17.0

03 Apr 12:13
Compare
Choose a tag to compare

Note

This release contains fixes to the Privacy Manifest. Upgrade to avoid issues in the App Store app submission starting from May 1st.

Bug fixes 🐞

  • Fix the issue with invalid privacy manifest #2145

Dependencies

  • Update MapboxCommon to 23.9.2.
  • Update MapboxCoreMaps to 10.17.0:

Dependency requirements:

  • Compatible version of Xcode: 14.1.0

v11.3.0-rc.1

28 Mar 15:17
Compare
Choose a tag to compare
v11.3.0-rc.1 Pre-release
Pre-release

Known Issues ⚠️

  • The tiles fetching from the offline database is malfunctioning for the composited sources. Setting "com.mapbox.maps.experimental.offline_vt_compositing" runtime settings flag to false resolves this issue
let settings = SettingsServiceFactory.getInstance(storageType: .nonPersistent) // Storage type must be nonPersistent
settings.set(key: "com.mapbox.maps.experimental.offline_vt_compositing", value: false)

Features ✨ and improvements 🏁

  • [tile store] Expose API for estimating Tile Region downloads and storage size, by @tatiana-yan (29db563)
  • [offline] Now the composited tile payload will include parent tile data from the tile pack in cases where the ideal zoom component is missing

Bug fixes 🐞

  • Fix a crash that could occur on Metal when the texture object would outlive the renderer
  • Fix a bug where specifying a large negative value for padding resulted in the returned zoom value being NaN
  • Fix location indicator models rendering issue with globe projection
  • Fix the issue with invalid privacy manifest #2145

Dependencies

  • Update MapboxCommon to 24.3.0-rc.1
  • Update MapboxCoreMaps to 11.3.0-rc.1

Dependency requirements:

  • Compatible version of Xcode: 15.2.0

v11.3.0-beta.1

14 Mar 14:51
Compare
Choose a tag to compare
v11.3.0-beta.1 Pre-release
Pre-release

In this release, the minimum supported version of Xcode has been updated to 15.2 (Swift 5.9).

Features ✨ and improvements 🏁

  • Add API to handle gestures and expand clusters of point annotations
  • Add annotations drag handlers callbacks dragBeginHandler, dragChangeHandler, dragEndHandler to all annotation types.
  • [SwiftUI] Expose the captureSnapshot on MapProxy which allows to capture SwiftUI Map snapshot using MapReader
  • [SwiftUI] Expose opaque and frameRate on SwiftUI Map
  • [SwiftUI] Add allowHistTesting modifier on MapViewAnnotation.
  • [SwiftUI] Fix view annotations positioning on .ignoresSafeArea(.all)
  • Add includeOverlays parameter to MapView.snapshot()
  • Added Attribution and Telemetry pop-up dialogs and compass view content description translations for Arabic, Belarusian, Bulgarian, Catalan, Chinese Simplified, Chinese Traditional, Czech, Danish, Dutch, French, Galician, German, Hebrew, Italian, Japanese, Korean, Lithuanian, Norwegian, Polish, Belarusian, Russian, Spanish, Swedish, Ukranian and Vietnamese.
  • Change tinygltf in favor of cgltf
  • Use mipmap with pattern images
  • Support for meshopt compression in mapbox landmarks
  • [tile_store] Enable delta updates by default for Maps domain.

Bug fixes 🐞

  • Fix taps propagation on ViewAnnotation and MapViewAnnotation.
  • Fix layer paint property update with feature state changes, especially if the paint property value data-driven by brightness or zoom
  • Fix snapshotter race conditions to ensure new request could effectively trigger map rendering
  • Fix raster array band updates glitches during the camera zoom animation
  • Reload vector source tiles when language or worldview setting is changed.
  • Apply config expression to atmosphere properties.
  • Fix map freezing when using queryRenderedFeatures with 3d models in mercator projection
  • Reduce time spent on line gradient updates on the render thread
  • [reachability] Fix reachability status getting stuck with ReachableViaWWAN status if HTTP requests completed at the same time as network reported being disconnected

Dependencies

Dependency requirements:

  • Compatible version of Xcode: 15.2

v10.16.6

04 Mar 14:09
Compare
Choose a tag to compare

Bug fixes 🐞

  • Reduce network data transfer on style package update.

Dependencies

  • Update MapboxCoreMaps to 10.16.6.
  • Update MapboxCommon to 23.9.1.

Dependency requirements:

  • Compatible version of Xcode: 14.1.0

v11.2.0

28 Feb 16:04
Compare
Choose a tag to compare

Features ✨ and improvements 🏁

  • visionOS support. Check out our Work with visionOS article to get started! 🚀 35a3bea by @persidskiy
  • Add easing curve parameter to CameraAnimationsManager.fly(to:duration:curve:completion), make TimingCurve public with few more options. fb71405 by @aleksproger
  • Expose MapboxMap.centerAltitudeMode and ensure correct centerAltitudeMode on gesture ending. d83e2e3 by @aleksproger
  • Expose extra configuration methods for MapboxMap: setNorthOrientation(_:), setConstrainMode(_:) and setViewportMode(_:).
    Use them to configure respective map options after creating a map view. d83148d by @evil159
  • Expose MapboxMap.reduceMemoryUse() which can be used in situations when it is important to keep the memory footprint minimal. d83148d by @evil159
  • Expose MapboxMap.isAnimationInProgress and MapboxMap.isGestureInProgress to query current status of both built-in and custom camera animations and gestures. d83148d by @evil159
  • Expose experimental CustomRasterSource and non-experimental CustomGeometrySource as regular Source's providing a better way to work with them and also allow for using them in Style DSL. 711ac7f by @pjleonard37
  • Introduce tileCacheBudget property on GeoJsonSource, RasterSource, RasterDemSource, RasterArraySource, VectorSource, CustomGeometrySource, and CustomRasterSource. 942afd6 by @pjleonard37
  • MapboxMaps/setTileCacheBudget(size:) will now use the TileCacheBudgetSize property, the older method with TileCacheBudget has been deprecated and will be removed in a future major release. 942afd6 by @pjleonard37
  • Introduce SymbolLayer.iconColorSaturation API. ed4a831 by @aleksproger
  • Introduce experimental RasterLayer.rasterElevation API. ed4a831 by @aleksproger
  • Introduce experimental MapboxMap.collectPerformanceStatistics allowing to collect map rendering performance statistics, both for UIKit and SwiftUI. 1a5fd6f by @aleksproger

Bug fixes 🐞

  • Fix MapView flickering during resizing. 8824c0c by @OdNairy
  • Fix glitch in chained camera animations. 8824c0c by @OdNairy
  • Build XCFramework with SWIFT_SERIALIZE_DEBUGGING_OPTIONS=NO flag to avoid serialized search paths in Swift modules. 84b7724 by @OdNairy
  • Fixed a crash that occurs when annotations have duplicate identifiers. 1b7dfcc by @persidskiy
  • Fix Map and encompassing List scroll at the same time. 4367c15 by @aleksproger

Dependencies

  • Update MapboxCoreMaps to 11.2.0
  • Update MapboxCommon to 24.2.0.

Dependency requirements:

  • Compatible version of Xcode: 14.3.1

v10.16.5

23 Feb 06:51
Compare
Choose a tag to compare

Bug fixes 🐞

  • Address crashes on certain devices by disabling the texture pool
  • Fix snapshotter race conditions to ensure new request could effectively trigger map rendering

Dependencies

  • Update MapboxCoreMaps to 10.16.5.
  • Update MapboxCommon to 23.9.0.

Dependency requirements:

  • Compatible version of Xcode: 14.1.0

v11.2.0-rc.1

15 Feb 21:27
Compare
Choose a tag to compare
v11.2.0-rc.1 Pre-release
Pre-release

Features ✨ and improvements 🏁

  • model-emissive-strength support for landmarks
  • Little speedup of preparing tiled sources for rendering
  • Uploading model resources to GPU in continuous map mode is now limited by fixed time per frame
  • Modified fill-extrusion-cutoff-fade-range to scale down and remove buildings in a staggered fashion, instead of fading opacity

Bug fixes 🐞

  • Fix Map and encompassing List scroll at the same time by @aleksproger
  • visionOS small enhancements by @persidskiy @azarovalex
  • Fix model-cutoff-fade-range calculation on low zoom levels
  • Fixed rare null pointer dereference crash
  • Fix crash in device location provider
  • Fix cache invalidation region coordinates parsing: accept integers.

Dependencies

Dependency requirements:

  • Compatible version of Xcode: 14.3.1