Releases: mapbox/mapbox-maps-ios
v11.8.0-beta.1
Features ✨ and improvements 🏁
-
Introduce experimental Geofencing API. Implementation example: GeofencingExample.swift
-
Refactor of the experimental Featuresets and Interactions API:
InteractiveFeature
is renamed toFeaturesetFeature
.- Introduce new
StandardPoiFeature
,StandardBuildingsFeature
,StandardPlaceLabelsFeature
. - Introduce new
FeaturesetDescriptor
.
-
Generate
MapStyle.standard
andMapStyle.standardSatellite
from the style specification. Added the newStandardFont
type to represent the font family in these configurations. If you used a string variable, update your code:
// Old:
Map().mapStyle(.standard(font: fontValue))
Map().mapStyle(.standard(font: "lato"))
/// New:
Map().mapStyle(.standard(font: StandardFont(rawValue: fontValue)))
Map().mapStyle(.standard(font: .lato))
Map().mapStyle(.standard(font: "lato"))
- Introduce experimental property
MapboxMap.styleGlyphURL
. Use this property to apply custom fonts to the map at runtime, without modifying the base style. - Introduce new
styleGlyphURL
property. - Make
fill-extrusion-emissive-strength
property data-driven - Dispatch view annotations update before rendering
- Skip rendering landmarks when the camera is inside them
Bug fixes 🐞
- Fix a console warning (
Source x missing for layer x
) when using annotation managers. - [SwiftUI] Fixed crash when
ForEvery
was used with duplicated IDs. - Improve zooming performance on dynamic Standard terrain and optimize terrain re-rendering performance on e.g routeline line-trim-offset change.
- Respect polygons with holes on querying rendered features
- Fix self-overlap of line corners when large line-width is used
- Adjust conflation intersection test padding to fix disappearing fill-extrusion
- Fix TileCover bug with polygon horizontal edges
- Fix a bug with image dependent paint properties not getting a correct value after image become available
- Fix for fill-extrusion replacement reconciliation
- Clear tile pyramid on color theme change before the tiles are updated
- Fix missing images notifications for images within coalesce expression when other images in coalesce are present. Image expressions with two arguments are no longer being considered present if only second image is present.
- Fix crash on style pack load when no access token is set
- Fix crash in TerrainRenderer when using snapshotter
- Fix crash on re-creation of a custom raster source when different options are provided
- Return parsing errors if runtime added style import JSON is not valid
- Fix missing models in rendering result if
reduceMemoryUse
is called before taking snapshot - Fix the incorrect behaviour when using
symbol-z-oder
property - Fix raster-particle trail discontinuity at the antimeridian
Dependencies
- Update MapboxCommon to
24.8.0-beta.1
. - Update MapboxCoreMaps to
11.8.0-beta.1
:-
Changelog
-
Dependency requirements:
- Compatible version of Xcode:
15.2.0
v11.7.1
v11.2.1
v11.7.0
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
Dependency requirements:
- Compatible version of Xcode:
15.2.0
v10.19.0
MBXCLLiveTrackingClient
might cause crashes, the problem will be fixed in the next 10.19.1 patch release.
The crashing code is unused. The10.19.0
is all good, no need for the10.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
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
v11.6.1
v11.7.0-beta.1
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 theInteractionContext
-
Introduce a new
RenderedQueryGeometry
type to replace multipleMapboxMaps.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 forArray
andDictionary
system types. If you were relying on theinit(rawValue:)
function orrawValue
property, you can use the substitution instead:init(rawValue:)
->init(turfRawValue:)
rawValue
->turfRawValue
-
Remove experimental
model-front-cutoff
property fromModelLayer
-
Expose experimental
ClipLayer.clipLayerScope
,SymbolLayer.symbolElevationReference
andSymbolLayer.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 withFillExtrusionLayer
in some cases
Dependencies
- Update MapboxCommon to
24.7.0-beta.2
. - Update MapboxCoreMaps to
11.7.0-beta.2
. - Update Turf to
3.0.0
.
Dependency requirements:
- Compatible version of Xcode:
15.2.0
v11.6.0
- 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.
- You no longer need to append
- Expose experimental
ClipLayer
to remove 3D data (fill extrusions, landmarks, trees) and symbols. CustomRasterSource
API is 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 🐞
- 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
Dependency requirements:
- Compatible version of Xcode:
15.2.0
v11.6.0-rc.1
Changes
ClipLayer
propertyclipLayerTypes
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