Releases: mapbox/mapbox-maps-ios
v11.5.2
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
Changes
ClipLayer
propertyclipLayerTypes
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.
- You no longer need to append
- Expose experimental
ClipLayer
to remove 3D data (fill extrusions, landmarks, trees) and symbols. CustomRasterSource
API updated, nowCustomRasterSourceOptions
accepts protocolCustomRasterSourceClient
, enabling direct rendering intoCustomRasterSource
tiles. To achieve behavior similar to previous releases one may construct instance ofCustomRasterSourceClient
as shown below:
CustomRasterSourceOptions(tileStatusChangedFunction: { tileID, status in }) // Before
CustomRasterSourceOptions(clientCallback: CustomRasterSourceClient.fromCustomRasterSourceTileStatusChangedCallback { tileID, status in }) // Now
- Introduce new
ViewAnnotation.allowZElevate
andMapViewAnnotation.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
andMap.presentsWithTransaction
in favor ofMapView.presentationTransactionMode
andMap.presentationTransactionMode
. The new defaultPresentationTransactionMode.automatic
updates thepresentsWithTransaction
automatically when need to optimize performance. If you used theMapView.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
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
Features ✨ and improvements 🏁
- Use new
LineJoin.none
in conjunction with an image as alinePattern
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 forGeoJSONSource
and forClusterOptions
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
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
- Update MapboxCommon to
24.5.0-rc.1
. - Update MapboxCoreMaps to
11.5.0-rc.1
.
Dependency requirements:
- Compatible version of Xcode:
15.2.0
v10.18.2
v11.5.0-beta.1
Features ✨ and improvements 🏁
- Improve stability of symbol placement when using
FollowPuckViewportState
. by @evil159 - Expose
clusterMinPoints
property forGeoJSONSource
and forClusterOptions
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
- Update MapboxCommon to
24.5.0-beta.4
. - Update MapboxCoreMaps to
11.5.0-beta.1
.
Dependency requirements:
- Compatible version of Xcode:
15.2.0
v10.18.1
v10.18.0
v11.4.0
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. 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
. -
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 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- 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
Dependency requirements:
- Compatible version of Xcode:
15.2.0