Releases: mapbox/mapbox-maps-ios
v10.0.1
Dependencies and system requirements
- Requires MapboxCoreMaps v10.0.0
- Requires MapboxCommon v20.0.0
- Requires Swift Package Manager or CocoaPods
- Tested in Xcode 12.4 on macOS 10.15 Catalina
Changes
- Passing an unsupported locale into
Style.localizeLabels(into:forLayerIds:)throws an error instead of crashing. (#752) - Fixed a bug affecting the persistence of user settings when upgrading to v10. (#758)
- Allow compass visibility to accurately reflect set value. (#757)
- Update MapboxMobileEvents to v1.0.6, fixing a null pointer crash. (#762)
Direct download
Link to download binaries (append your own Mapbox access token scoped with DOWNLOADS:READ):
https://api.mapbox.com/downloads/v2/mobile-maps-ios/releases/ios/10.0.1/MapboxMaps.zip?access_token=<access-token>
v10.0.0
Dependencies and system requirements
- Requires MapboxCoreMaps v10.0.0
- Requires MapboxCommon v20.0.0
- Requires Swift Package Manager or CocoaPods
- Tested in Xcode 12.4 on macOS 10.15 Catalina
Changes
Style
- [breaking] Removes default parameter values in the
addImagefunction. (#695) - [breaking] Updated generic layer and source methods on
Styleto not rely on type inference. This makes it easier to use the methods correctly in a wider variety of contexts. (#694)layer(withId:)is nowlayer(withId:type:).updateLayer(withId:update:)is nowupdateLayer(withId:type:update:).source(withId:)is nowsource(withId:type:).
- [breaking] Updated untyped variants of layer and source methods on
Styleto no longer require a type parameter. This makes it easier to get a layer without knowing its type ahead of time. (#694)layer(withId:type:)is nowlayer(withId:).source(withId:type:)is nowsource(withId:).
- [breaking] Removed experimental designation from the following APIs
- [breaking]
layerProperty(for:property:)is nowlayerPropertyValue(for:property:)to avoid ambiguity. (#708) - [breaking]
updateGeoJSONSource(withId:geoJSON:)is no longer generic, and works with any TurfGeoJSONObject. (#715) - [breaking] Setting the
dataproperty on a GeoJSON source viasetSourceProperty(for:property:value:)orupdateGeoJSONSource(withId:geoJSON:)is now asynchronous and never returns an error. Errors will be reported asynchronously via aMapEvents.EventKind.mapLoadingErrorevent instead, which you can listen for using theMapboxMap.onNextandonEverymethods. (#732)
Gestures
- [breaking] The methods of
GestureManagerDelegatehave been updated to provide more visibility into the gesture lifecycle. (#697)gestureBegan(for:)is nowgestureManager(_:didBegin:).gestureManager(_:didEnd:willAnimate:)has been added.gestureManager(_:didEndAnimatingFor:)has been added.
- [breaking] Annotation managers now share a single tap gesture recognizer. This fixes a bug that where annotation managers could block each others' touch events. (#709)
GestureManager.singleTapGestureRecognizerhas been added.*AnnotationManager.tapGestureRecognizerhas been removed.
- Any touch event in the map now immediately disables camera animation. Temporarily disable user interaction on the
MapViewto disable this behavior as needed. (#712) - The double tap, quick zoom, and double touch gestures now use the gesture's location in the view to anchor camera changes. Previously, they used the camera's center coordinate. (#722)
Annotations
- [breaking] The default image feature for point annotations has been removed. (#707)
PointAnnotation.Imageis now astruct(was previously anenum).PointAnnotation.Image.defaulthas been removed.PointAnnotation.Image.customhas been replaced withPointAnnotation.Image.init(image:name:).
- [breaking] Annotation managers are now kept alive by the
AnnotationOrchestrator(MapView.annotations) until they are explicitly destroyed by callingmapView.annotations.removeAnnotationManager(withId:)or are implicitly destroyed by creating a second annotation manager with the same ID. (#725) - [breaking] The
AnnotationManagerprotocol now conforms toAnyObject. (#725) AnnotationOrchestrator.annotationManagersByIdhas been added. This dictionary contains all annotation managers that have not been removed. (#725)
Turf & GeoJSON
- [breaking]
MapboxCommon.Geometryextension methods are now internal. (#683) - [breaking]
TileRegionLoadOptions.initnow takes aGeometryinstead of aMapboxCommon.Geometry. (#711) - [breaking]
QueriedFeature.featureis no longer optional. (#737) - Adds
TileRegionLoadOptions.geometrythat uses TurfGeometry. (#711) - Adds
FeatureExtensionValue.init(value:features:)that works with Turf. (#717) - Adds
FeatureExtensionValue.featuresthat uses TurfFeature. (#717) - APIs that accept Turf
Featurenow allowFeature.identifierand.propertiesto benil. (#717) - APIs that accept Turf
Featurenow ignoreFeature.propertiesinstead of crashing if it cannot be converted to[String: NSObject]. (#717) - Adds the
ExpressionArgument.geoJSONObject(_:)case, which allows you to include aTurf.GeoJSONObjectinstance in an expression with theExpression.Operator.distanceorExpression.Operator.withinoperator. (#730)
Camera
- [breaking] Removed redundant
CameraAnimationsManager.options. (#712)- Use
MapboxMap.cameraBoundsandMapboxMap.setCameraBounds(with:)instead. MapboxMap.setCameraBounds(for:)has been renamed tosetCameraBounds(with:)
- Use
- [breaking] Refines
OfflineRegionGeometryDefinitionto use Turf types. (#706)geometryis now of typeGeometryinstead ofMapboxCommon.Geometry.- A
Geometry-based init method has been added.
BasicCameraAnimatorno longer updates the camera a final time after being stopped or canceled prior to running to completion. (#712)BasicCameraAnimator.isReversedis now settable. (#712)
Misc
- [breaking] Core and Common APIs that accept user-defined implementations of protocols now hold strong references to the provided objects. (#732)
- Please audit your usage of the following protocols and make any required changes to avoid memory leaks:
CustomLayerHost,ElevationData,MapClient,MBMMetalViewProvider,Observer,OfflineRegionObserver,HttpServiceInterceptorInterface,HttpServiceInterface,LogWriterBackend,OfflineSwitchObserver,ReachabilityInterface,TileStoreObserver.
- Please audit your usage of the following protocols and make any required changes to avoid memory leaks:
- [breaking]
PreferredFPShas been removed.MapView.preferredFramesPerSecondnow of typeInt, rather thanPreferredFPS. (#735) - [breaking]
TypeConversionErrorhas a new caseunsuccessfulConversion. (#737) MapboxCommon.HTTPServiceFactory.reset()has been added to release the HTTP service implementation. (#732)- Adds
MapView.preferredFrameRateRangefor devices using iOS 15.0 and up. (#735) - Adds
TileStore.subscribe(_:)which can be used to observe aTileStore's activity. The API design deviates from Android's add/remove observer API so that the developer-providedTileStoreObservercan be wrapped into aMapboxCommon_Private.TileStoreObserverwithout needing to use global state or something like Objective-C associated objects to look up which wrapper goes with with developer-provided observer when calling__removeObserver. (#737) - Adds
TileStoreObserverprotocol. (#737) - [bugfix] Fix rendering artifacts for a model layer when
model-opacityproperty is used. (#732) - [bugfix] Improve rendering performance by avoiding unnecessary re-layout for cached tiles. (#732)
- [bugfix] Fix telemetry opt-out through attribution dialog. (#743)
Dependencies
- Updates MapboxCoreMaps to v10.0.0, MapboxCommon to v20.0.0. (#732)
- Updates Turf to v2.x. (#741)
- Updates MapboxMobileEvents to v1.0.5. (#724)
Direct download
Link to download binaries (append your own Mapbox access token scoped with DOWNLOADS:READ):
https://api.mapbox.com/downloads/v2/mobile-maps-ios/releases/ios/10.0.0/MapboxMaps.zip?access_token=<access-token>
Mapbox Maps: v10.0.0-rc.9
Dependency requirements:
- Compatible version of MapboxCoreMaps: v10.0.0-rc.9.1
- Compatible version of MapboxCommon: v19.0.0
- Compatible version of Xcode: 12.5
- Compatible version of MacOS: Catalina
Changes
Breaking changes ⚠️
BasicCameraAnimatornow keeps animators alive without the user storing the animator. (#646)- Experimental style APIs are now marked with
@_spi(Experimental)and the previously used underscore prefixes have been removed. In order to access these methods, use@_spi(Experimental)to annotate the import statement for MapboxMaps. (#680) RenderedQueryOptions.filteris now of typeExpressioninstead ofAny(#689)OfflineRegionGeometryDefinition.geometryis now of typeTurf.Geometryinstead ofMapboxCommon.Geometry(#689)- The
HTTPResponseinit methods that takeMapboxCommon.Expectedinstead ofResultare now correctly marked as refined for Swift. (#689) - The
DownloadStatusinit methods that takeMapboxCommon.Expectedinstead ofResultandNSNumber?instead ofUInt64?are not correctly marked as refined for Swift. (#689) GestureOptions.hapticFeedbackEnabledhas been removed. (#663)GestureManager.decelarationRatehas been removed andGestureOptions.decelerationRateis the single source of truth. (#662)GestureManagerno longer conforms toNSObjectand is not aUIGestureRecognizerDelegate. (#669)TapGestureHandler.initwas previously public by mistake and is now internal. (#677)- The behavior of
GestureManager.optionshas been updated to better reflect theisEnabledstate of the associated gesture recognizers. (#677) - The gesture recognizer properties of
GestureManagerare no longerOptional. (#677) GestureTypehas been redesigned so that its cases have a 1-1 relationship with the built-in gestures. (#677)GestureManager.rotationGestureRecognizerhas been removed. Rotation is now handled by.pinchGestureRecognizerin addition to its preexisting handling of panning and zooming. (#696)GestureManager.doubleTapToZoomOutGestureRecognizerhas been replaced with.doubleTouchToZoomOutGestureRecognizer. (#696)PanScrollingModehas been renamed toPanMode. (#696)GestureOptions.zoomEnabledhas been replaced by.doubleTapToZoomInEnabled,.doubleTouchToZoomOutEnabled, and.quickZoomEnabled. (#696)GestureOptions.rotateEnabledhas been removed. (#696)GestureOptions.scrollEnabledhas been renamed to.panEnabled. (#696)GestureOptions.scrollingModehas been renamed to.panMode. (#696)GestureOptions.decelerationRatehas been renamed to.panDecelerationFactor. (#696)GestureType.doubleTapToZoomOuthas been replaced with.doubleTouchToZoomOut. (#696)GestureType.rotatehas been removed. (#696)GestureTypecases have been reordered for consistency withGestureOptionsandGestureManager. (#696)
Features ✨ and improvements 🏁
- Allow users to set the map's
MapDebugOptions. (#648) - Implement 'promoteId' feature for geojson and vector sources. The feature allows to promote feature's property to a feature id, so that promoted id can be used with FeatureState API. (#660)
- Tiled 3D model layer and source (#689)
- Enable instant transitions for data driven symbol layer properties (#689)
- Implement face culling for Metal (#689)
HTTPServiceInterface.getInstance()is now publicly available. (#689)CameraState's fields are nowvars instead oflets for testing purposes, and a public, memberwise initializer has been added. (#677)PanScrollingModenow conforms toCaseIterable. (#677)GestureTypenow conforms toCaseIterable. (#677)- Pan deceleration has been reimplemented to produce a more natural deceleration effect. (#692)
- Expose new API to allow users to create a
UIImageout of the last rendered MapView state. (#693)
Bug fixes 🐞
- Fixes animations that are started within an UIKit animation context. (#684)
- Fix transition between layers with all-constant properties (#689)
- Fix rendering artifact for a line layer, when its line-gradient property is set at runtime. (#689)
- Don't draw SDF images in text-field and issue warning for it (#689)
- Fix incorrect return from
StyleManager#getStyleLayerPropertyDefaultValuefor 'text-field'. Now the default value is set to["format", "" , {}](#689) - GestureManager no longer sets itself as the delegate of all gestures in MapView when its options change. (#677)
- Fixes an issue where tapping the compass could fail to set the bearing to 0 if there was already an animation running. Tapping the compass now cancels any existing animations. (#696)
- Fixes issues with the pinch gesture when removing and re-adding one of the two required touches. (#696)
- Fixes an issue where a pan gesture would fail if it interrupted the deceleration from a previous pan gesture. (#696)
Direct download
Link to download binaries (append your own Mapbox access token scoped with DOWNLOADS:READ):
https://api.mapbox.com/downloads/v2/mobile-maps-ios/releases/ios/10.0.0-rc.9/MapboxMaps.zip?access_token=<access-token>
Mapbox Maps: v10.0.0-rc.8
Dependency requirements:
- Compatible version of MapboxCoreMaps: 10.0.0-rc.8
- Compatible version of MapboxCommon: 18.0.0
- Compatible version of Xcode: 12.5
- Compatible version of MacOS: 11.15
Changes
Breaking changes ⚠️
QueriedFeature.featureis now of typeTurf.Feature?instead ofMapboxCommon.Feature. (#628)- Enables error notification in offline mode if the required resource is missing in cache (before map did not emit any notification in this case) (#628)
- Suppresses error notifications on missing volatile tiles in offline mode (#628)
- Adapt setBounds to gl-js behavior: constraining of coordinates and zoom level is now stricter to prevent out of bounds map area to be visible in the viewport (#628)
- Add HTTP interceptor API - HttpServiceInterface has a new method
setInterceptorthat must be implemented (#628) Geometrynow refers toTurf.Geometryinstead ofMapboxCommon.Geometry. (#622)Featurenow refers toTurf.Featureinstead ofMapboxCommon.Feature. (#642)- Renamed
ColorRepresentabletoStyleColor(#650) - Removed the argument label from
StyleColor'sUIColorinitializer (#650) - Renamed
ColorRepresentable.rgbaDescriptiontoStyleColor.rgbaString. (#650) - Changed
StyleColor'sEncodableimplementation to always encode an rgba color string instead of encoding an rgba expression (#650) - Updated the extension on
UIColorthat addsExpressionArgumentConvertibleto return an rgba color string instead of an rgba expression. (#650) - Annotation managers now sync with their backing source and layer only once per display link. Use
syncSourceAndLayerIfNeeded()to force the sync to happen earlier. (#650, #621) - The
layerTypeargument toStyle._layerPropertyDefaultValue(for:property:)is now of typeLayerTypeinstead ofString(#650) Expressiondecoding will now fail if the operator is missing (#650)PointAnnotationManager.textVariableAnchoris now of type[TextAnchor]?instead of[String]?(#650)PointAnnotationManager.textWritingModeis now of type[TextWritingMode]?instead of[String]?(#650)
Features ✨ and improvements 🏁
- It is no longer necessary to
import Turf. (#622) - Enable instant transitions for data driven paint layer properties (#628)
- Offload networking tasks at the init phase (#631)
- 3D pucks will now be rendered over other 3D content and occluded by terrain (#641)
- Added a public, failable, component-wise initializer to
StyleColor(#650) - Updated
StyleColor'sDecodablesupport to be able to handle rgba color strings as well as rgba expressions (#650) - Made generated enums conform to
CaseIterable(#650) - Location puck can now hide the accuracy ring. The default value is to hide the accuracy ring. In order to enable the ring, set the
showAccuracyRingproperty inPuck2DConfigurationtotrue. #629 - Annotation interaction delegates are only called when at least one annotation is detected to have been tapped (638)
Bug fixes 🐞
- Fix volatile tiles disappearing on "not modified" response (#628)
- Fix crash in MapboxMap.clearData() (#628)
- Trigger map redraw when feature state changes (#628)
- Do not start background task if telemetry collection is disabled (#631)
- Fix KVC decoding for iOS 15 (#631)
- The GeoJSON source backing an
AnnotationMnageris now removed correctly when anAnnotationManageris deallocated (#633) - Updated annotations to use
rgbaStringandinit(rgbaString:)when serializing and deserializingStyleColors (#650) - Annotation managers now properly restore the default values of any annotation or common style properties that are reset to nil, with the exception of
text-fieldandline-gradientfor which there are currently issues to resolve between mapbox-maps-ios and mapbox-core-maps-ios. (#650) - Fixed Expression decoding when second array element could be an operator (#650)
- Fixed an issue where layer persistence was not maintained after calling
Style._moveLayer. (#643) - Fix issue where annotations were not being returned to annotation interaction delegates (638)
Breaking changes ⚠️
TileStore.tileRegionGeometry(forId: String, completion: @escaping (Result<MapboxCommon.Geometry, Error>) -> Void)has been updated toTileStore.tileRegionGeometry(forId: String, completion: @escaping (Result<Geometry, Error>) -> Void). (#661)
Direct download
Link to download binaries (append your own Mapbox access token scoped with DOWNLOADS:READ):
https://api.mapbox.com/downloads/v2/mobile-maps-ios/releases/ios/10.0.0-rc.8/MapboxMaps.zip?access_token=<access-token>
Mapbox Maps: v10.0.0-rc.7
Dependency requirements:
- Compatible version of MapboxCoreMaps: v10.0.0-rc.7.2
- Compatible version of MapboxCommon: v17.1.0
- Compatible version of Xcode: 12.4+
- Compatible version of MacOS: Big Sur
Changes
Features ✨ and improvements 🏁
- Add support for
FeatureStatein GeoJSON sources. (#611)setFeatureState(sourceId:sourceLayerId:featureId:state:)is used to associate astateMapfor a particular featuregetFeatureState(sourceId:sourceLayerId:featureId:callback:)is used to retrieve a previously storedstateMapfor a featureremoveFeatureState(sourceId:sourceLayerId:featureId:stateKey:)is used to remove a previously storedstateMapfor a feature
- Added
GeoJSONSource.generateId(#593) - Enable the combined usage of line-dasharray with line-gradient (#588)
- Fixed rendering issue for round line-join in line gradients (#594)
Breaking changes ⚠️
- Removed GeoJSONManager. Please use Turf directly instead to serialize and deserialize GeoJSON. (#603)
- Add specific geometry types to annotations. (#612)
- Replace syncAnnotations with property setter. (#614)
Bug fixes 🐞
- Update all Annotation files to use
get/setinstead ofdidSet. This fixes an issue where properties were not being set atinit. (#590) GeoJSONSource.clusterPropertiesis now correctly modeled per the style spec. (#597)- Fixes a crash caused by
MapboxMap.clearData(). (#609) - Added missing attribution and links to info alert controller. (#591)
- Fixed issue that caused incorrect animation of negative padding values (#602)
Direct download
Link to download binaries (append your own Mapbox access token scoped with DOWNLOADS:READ):
https://api.mapbox.com/downloads/v2/mobile-maps-ios/releases/ios/10.0.0-rc.7/MapboxMaps.zip?access_token=<access-token>
Mapbox Maps: v10.0.0-rc.6
Dependency requirements:
- Compatible version of MapboxCoreMaps: v10.0.0-rc.6
- Compatible version of MapboxCommon: v16.2.0
- Compatible version of Xcode: 12.4
- Compatible version of MacOS: Big Sur
Changes
Features ✨ and improvements 🏁
- Added support for building with Xcode 13b3. (#564)
- Added attribution to snapshots generated by
Snapshotter. (567) - Added a convenience initializer for
DownloadStatus(#454)
Bug fixes 🐞
- Fixed an issue where panning was not enabled while zooming. (#474)
Direct download
Link to download binaries (append your own Mapbox access token scoped with DOWNLOADS:READ):
https://api.mapbox.com/downloads/v2/mobile-maps-ios/releases/ios/10.0.0-rc.6/MapboxMaps.zip?access_token=<access-token>
Mapbox Maps: v10.0.0-rc.5
Dependency requirements:
- Compatible version of MapboxCoreMaps: v10.0.0-rc.5
- Compatible version of MapboxCommon: 16.0.0
- Compatible version of Xcode: 12.4
- Compatible version of MacOS: Big Sur
Changes
Bug fixes 🐞
- Fixed an issue where
MapViewpositioning wasn't correct when used in containers such as UIStackView (#533)
Direct download
Link to download binaries (append your own Mapbox access token scoped with DOWNLOADS:READ):
https://api.mapbox.com/downloads/v2/mobile-maps-ios/releases/ios/10.0.0-rc.5/MapboxMaps.zip?access_token=<access-token>
Mapbox Maps: v10.0.0-rc.4
Dependency requirements:
- Compatible version of MapboxCoreMaps: v10.0.0-rc.4
- Compatible version of MapboxCommon: v15.0.0
- Compatible version of Xcode: 12.4
- Compatible version of MacOS: Big Sur
Changes
Features ✨ and improvements 🏁
- Support
text-writing-modeproperty for line symbol-placement text labels. (#522)
Note: This change will bring following changes for CJK text block:- For vertical CJK text, all the characters including Latin and Numbers will be vertically placed now. Previously, Latin and Numbers are horizontally placed.
- For horizontal CJK text, it may have a slight horizontal shift due to the anchor shift.
- Expanded
localizeLabels(into: Locale)to accept a[String]. This array will contain a list of layer ids that you will want to localize. (#512)
Breaking changes ⚠️
TileRegionErrorhas a new casetileCountExceeded(String). (#522)- FlyToCameraAnimator.state will now be
.inactiveafter it completes or is stopped. This change makes its behavior consistent with the behavior ofBasicCameraAnimator. (#519) - Completion blocks added to
BasicCameraAnimatorwill no longer be invoked as a side-effect of deinitialization. (#519) - Removed the
SupportedLanguageenum. You may now useLocale(identifier: String)as intended. (#512) - Removed the
MapView.localeproperty. Now, in order to localize values, you must callmapView.mapboxMap.style.localizeLabels(into: Locale). (#512)
Bug fixes 🐞
- Clean up network listener after http file source gets out of scope. (#522)
- Fix
line-centeranchor calculation when the anchor is very near to the line geometry point. (#522) - Fix threading issues in HTTP file source. (#522)
- Fixed an issue that could cause flickering during ease to and basic animations (#519)
- Fixed an issue that could result in ease to and basic animations never reaching their final values (#519)
Direct download
Link to download binaries (append your own Mapbox access token scoped with DOWNLOADS:READ):
https://api.mapbox.com/downloads/v2/mobile-maps-ios/releases/ios/10.0.0-rc.4/MapboxMaps.zip?access_token=<access-token>
Mapbox Maps: v10.0.0-rc.3
Dependency requirements:
- Compatible version of MapboxCoreMaps: v10.0.0-rc.3
- Compatible version of MapboxCommon: v14.2.0
- Compatible version of Xcode: 12.4
- Compatible version of MacOS: Big Sur
Changes
The Mapbox Maps SDK for iOS has moved to release candidate status and is now ready for production use.
Features ✨ and improvements 🏁
- Introduced static method
MapboxMap.clearData(for:completion:)and instance methodsMapboxMap.clearData(completion:)andSnapshotter.clearData(completion:). These new methods allow clearing temporary map data. (#496) MapLoadingErrorevents now include source and tile information where appropriate. These new fields allow developers to understand what source or tile has failed to load and the reason for the failure. (#496)
Bug fixes 🐞
- Fixed a runtime crash that occurred only when the SDK was included as an XCFramework (direct download). (#497)
- Fixed an issue where animators created by fly to and ease to were not released until the next fly to or ease to began. (#505)
- Fixed an issue where a complete animator would trigger redrawing unnecessarily. (#505)
- Fix raster/v1 terrain tiles fetch failures caused by appending pixel ratio to the URLs when tile size is equal to 512 (#496)
- Improve persistent layer pinning by keeping information about initial LayerPosition (#496)
Direct download
Link to download binaries (append your own Mapbox access token scoped with DOWNLOADS:READ):
https://api.mapbox.com/downloads/v2/mobile-maps-ios/releases/ios/10.0.0-rc.3/MapboxMaps.zip?access_token=<access-token>
Mapbox Maps: v10.0.0-rc.2
Dependency requirements:
- Compatible version of MapboxCoreMaps: v10.0.0-rc.2
- Compatible version of MapboxCommon: v14.0.1
- Compatible version of Xcode: 12.4
- Compatible version of MacOS: Big Sur
Changes
The Mapbox Maps SDK for iOS has moved to release candidate status and is now ready for production use.
Features ✨ and improvements 🏁
- Introduced experimental
Style._addPersistentLayer(with:layerPosition:),Style._isPersistentLayer(id:),Style._addPersistentCustomLayer(withId:layerHost:layerPosition:)APIs, so that the tagged layer and its associated resources remain when a style is reloaded. This improves performance of annotations during a style change. Experimental APIs should be considered liable to change in any SEMVER version. (#471, #473)
- Annotations now will persist across style changes by default. (#475)
- Adds localization support for v10 Maps SDK. This can be used by setting the
mapView.locale. Use theSupportedLanguagesenum, which lists currently supportedLocale. (#480) - Fixed Tileset descriptor bug: Completion handler is called even if the
OfflineManagerinstance goes out of scope. - Fixed text rendering when both 'text-rotate' and 'text-offset' are set.
Breaking changes ⚠️
Direct download
Link to download binaries (append your own Mapbox access token scoped with DOWNLOADS:READ):
https://api.mapbox.com/downloads/v2/mobile-maps-ios/releases/ios/10.0.0-rc.2/MapboxMaps.zip?access_token=<access-token>