Releases: mapbox/mapbox-maps-ios
Releases · mapbox/mapbox-maps-ios
v11.4.0-beta.2
Changes
MapboxMap.loadStyle()
andSnapshotter.loadStyle()
behaviour is rolled back to pre 11.4.0-beta.1 state by @persidskiy
⚠️ Known Issues ⚠️
- Setting a
RasterLayer
’srasterColor
property with an expression will block the layer from rendering. This issue will be resolved in v11.4.0-rc.1.
Dependencies
- Update MapboxCommon to 24.4.0-beta.2.
- Update MapboxCoreMaps to 11.4.0-beta.2.
Dependency requirements:
- Compatible version of Xcode:
15.2.0
v11.4.0-beta.1
Changes
- In v11.4.0-beta.1, setting a
RasterLayer
’srasterColor
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. TheMapContent
protocol now requires thevar 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, theMapStyle
now contains the configuration directly.TransitionOptions
is now a Swiftstruct
rather than an Objective-Cclass
.
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 ofCameraAnimator
by using newCameraAnimationsManager
APIs as shown belowYou can also observe directly on an instance of// 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)
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 asMapStyleContent
. by @aleksproger - Expose
removeStyleImport
,moveStyleImport
,updateStyleImport
,addStyleImport
methods onStyleManager
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()
andSnapshotter.loadStyle()
now correctly call thecompletion
closure. @persidskiy
Dependencies
- Update MapboxCommon to 24.4.0-beta.1.
- Update MapboxCoreMaps to 11.4.0-beta.1.
Dependency requirements:
- Compatible version of Xcode:
15.2.0
Maps SDK v11.3.0
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 🏁
- Swift 5.9 is a new minimum version for Maps SDK 11.3.0 (by @OdNairy).
- 🆕 Annotation drag handler callbacks (
dragBeginHandler
,dragChangeHandler
,dragEndHandler
) - (54ad83e by @paulsUsername, @persidskiy). - 🆕 Tap and long press gesture handlers for point annotation clusters (fc950cc by @aleksproger):
onClusterTap
andonClusterLongPress
toAnnotationManagers
(UIKit)onClusterTapGesture
andonClusterLongPressGesture
forPointAnnotationGroup
(SwiftUI)
- [SwiftUI] Expose the
captureSnapshot
onMapProxy
which allows to capture SwiftUI Map snapshot usingMapReader
(f8075af by @aleksproger). - [SwiftUI] Expose
opaque
andframeRate
on SwiftUI Map (f8075af by @aleksproger). - [SwiftUI] Add
allowHistTesting
modifier onMapViewAnnotation
(4709720 by @aleksproger). - [SwiftUI] Fix view annotations positioning on
.ignoresSafeArea(.all)
(4c05abe by @aleksproger). - Add
includeOverlays
parameter toMapView.snapshot()
(f8075af by @aleksproger). - 🆕 Download and Storage size estimation APIs for tile regions (29db563 by @tatiana-yan).
- Added Belarusian localization (af97247 by @kiryldz, @aleksproger).
- 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, Ukrainian and Vietnamese (186c6fd by @evil159, @aleksproger).
- [offline] Now the composited tile payload will include parent tile data from the tile pack in cases where the ideal zoom component is missing.
- [tile_store] Enable delta updates by default for Maps domain (by @tatiana-yan ).
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
andMapViewAnnotation
(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
Dependency requirements:
- Compatible version of Xcode:
15.2.0
v10.17.0
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
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
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
onClusterTap
andonClusterLongPress
toAnnotationManagers
(UIKit)onClusterTapGesture
andonClusterLongPressGesture
forPointAnnotationGroup
(SwiftUI)
- Add annotations drag handlers callbacks
dragBeginHandler
,dragChangeHandler
,dragEndHandler
to all annotation types. - [SwiftUI] Expose the
captureSnapshot
onMapProxy
which allows to capture SwiftUI Map snapshot usingMapReader
- [SwiftUI] Expose
opaque
andframeRate
on SwiftUI Map - [SwiftUI] Add
allowHistTesting
modifier onMapViewAnnotation
. - [SwiftUI] Fix view annotations positioning on
.ignoresSafeArea(.all)
- Add
includeOverlays
parameter toMapView.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
andMapViewAnnotation
. - 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-beta.1
- Update MapboxCommon to
24.3.0-beta.1
.
Dependency requirements:
- Compatible version of Xcode:
15.2
v10.16.6
v11.2.0
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)
, makeTimingCurve
public with few more options. fb71405 by @aleksproger - Expose
MapboxMap.centerAltitudeMode
and ensure correctcenterAltitudeMode
on gesture ending. d83e2e3 by @aleksproger - Expose extra configuration methods for
MapboxMap
:setNorthOrientation(_:)
,setConstrainMode(_:)
andsetViewportMode(_:)
.
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
andMapboxMap.isGestureInProgress
to query current status of both built-in and custom camera animations and gestures. d83148d by @evil159 - Expose experimental
CustomRasterSource
and non-experimentalCustomGeometrySource
as regularSource
's providing a better way to work with them and also allow for using them in Style DSL. 711ac7f by @pjleonard37 - Introduce
tileCacheBudget
property onGeoJsonSource
,RasterSource
,RasterDemSource
,RasterArraySource
,VectorSource
,CustomGeometrySource
, andCustomRasterSource
. 942afd6 by @pjleonard37 MapboxMaps/setTileCacheBudget(size:)
will now use theTileCacheBudgetSize
property, the older method withTileCacheBudget
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
Dependency requirements:
- Compatible version of Xcode:
14.3.1
v10.16.5
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
Dependency requirements:
- Compatible version of Xcode: 14.1.0
v11.2.0-rc.1
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
- Update MapboxCoreMaps to
11.2.0-rc.1
- Update MapboxCommon to
24.2.0-rc.2
Dependency requirements:
- Compatible version of Xcode:
14.3.1