Skip to content

Releases: mapbox/mapbox-maps-ios

v10.2.0

15 Dec 17:49
f8f4bb5
Compare
Choose a tag to compare

Dependency requirements:

  • Compatible version of MapboxCoreMaps: v10.2.0
  • Compatible version of MapboxCommon: v21.0.1
  • Compatible version of Xcode: 12.5

Changes

View Annotations

Annotations

  • Optimizes tap handling performance by doing a single call to queryRenderedFeatures in AnnotationOrchestrator, rather than in each annotation manager. (#840)

Gestures

  • Panning behavior on pitched maps has been improved. Panning no longer begins while the touch location is above the horizon, deceleration is disabled if the pan ends above the horizon, and the implementation of pan deceleration has been updated to avoid the sensitive portion of the map near the horizon. These changes help to reduce the incidence of the map moving unexpectedly far when flinging toward the horizon. (#888)
  • Additionally, the drag sensitivity around and above the horizon has been reduced. (#891)
  • There is a new experimental configuration option that addresses #775. However, it is off by default because it introduces the new issue #864. We plan to continue investigating solutions that will solve both issues.

Style

  • Style.localizeLabels(into:forLayerIds:) has been updated to only localize the primary localization and not the fall-through localizations. (#856)
  • StyleColor can now correctly deserialize rgba CSS colors that contain components with exponents. (#873)
  • The persistent layer APIs are no longer marked as experimental. In previous releases, import statements needed to be annotated with @_spi(Experimental) to expose these APIs. As of this release, that is no longer necessary. (#849)

Telemetry

  • The attribution dialog now reflects telemetry opt-in-out status correctly at first appearance. (#865).

Camera

  • Fixed an issue where camera animations triggered with startAnimation(afterDelay:) could appear jerky after a pan gesture. (#789)

Location

  • Refactors location-related components for increased testability and reliability. (#765)
    • Location.location is now public to allow access to the underlying CLLocation value.
    • Location.accuracyAuthorization has been added.
    • Location.init(location:heading:accuracyAuthorization:) has been added. Prefer this initializer over the older init(with:heading:) when creating instances of Location
    • Style's internal func addPersistentLayer(_ layer: Layer, layerPosition: LayerPosition? = nil) throws is now @_spi(Experimental) public
    • LocationManger.consumers now returns a copy of the underlying hash table. Previously, the actual instance was returned which allowed consuming code to modify the LocationManager's internal state.
    • LocationPermissionsDelegate now relays errors from the underlying location provider
    • LocationManager.updateHeadingForCurrentDeviceOrientation() no longer has any effect (what it did previously is now handled automatically)
    • Heading updates that arrive prior to a location update are now stored and delivered to LocationConsumers as soon as a location is available.
    • LocationConsumers now receive a new Location when the accuracy authorization changes.
    • LocationManager's implementation of the LocationProviderDelegate protocol now does nothing. The internal LocationProducer is now the LocationProviderDelegate
    • When a custom location provider is set on LocationManager, an instance of EmptyLocationProviderDelegate is set as the delegate of the old location provider as a defensive measure to avoid receiving any further delegate messages from the old provider. It would have been preferable to set the location provider's delegate to nil, but the protocol does not allow it and cannot be changed in a non-breaking way.
    • LocationManager (via LocationProducer) now starts & stops updating on the location provider based on whether there are any consumers. It handles the case where the final consumer is deinited (since it only holds weak references to them) by stopping the updating as soon as the next location provider delegate method is invoked.

Dependencies

  • Updates MapboxCoreMaps to v10.2.0. (#952)
    • Features ✨ and improvements 🏁
      • Add heatmap layer support to globe view
      • Improve performance for querying large number of features
      • Cache layer layout key inside layer, so that it is not re-evaluated at every parse of the every tile
      • Load Gltf external files
      • Add cancelable QRF API to the Map interface
      • Core renderer prints its version on initialization
      • Introduce experimental Map.setMemoryBudget method for setting memory budget for a Map and runtime "resource-budget" property for data sources
      • Reduce memory consumption of a model layer by avoiding duplicate texture uploads
      • Add circle layer support to globe
      • Introduce ViewAnnotation API and corresponding support in gl-native
    • Bug fixes 🐞
      • Reduces drag sensitivity around and above horizon
      • Release all unused resources when Map.reduceMemoryUse is invoked
      • Fix crash for the case when an empty fill extrusion bucket is tried to be rendered
      • Fix transparency with value<0.5 in models
      • Fix regression where setting the same geojson source URL did not refresh the data
      • Fix symbol layers with variable anchor placement not being placed correctly on globe view
      • Fix crash in symbol reprojection code caused by division by zero
      • Fix issue with bounds constraining behavior when terrain is enabled
  • Updates MapboxCommon to v21.0.1. (#952)

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.2.0/MapboxMaps.zip?access_token=<access-token>

v10.1.2

13 Dec 18:01
5fe7baa
Compare
Choose a tag to compare

Dependency requirements:

  • Compatible version of MapboxCoreMaps: v10.1.1
  • Compatible version of MapboxCommon: v20.1.2
  • Compatible version of Xcode: 12.5+

Changes

Updates MapboxCommon to v20.1.2 to fix a billing issue when upgrading from v6 to v10. This patch replaces the previous patch that was released (and subsequently recalled) as v10.1.1. #943

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.1.2/MapboxMaps.zip?access_token=<access-token>

v10.0.3

13 Dec 18:01
7f15e8d
Compare
Choose a tag to compare

Dependency requirements:

  • Compatible version of MapboxCoreMaps: v10.0.0
  • Compatible version of MapboxCommon: v20.0.3
  • Compatible version of Xcode: v12.5+

Changes

Updates MapboxCommon to v20.0.3 to fix a billing issue when upgrading from v6 to v10. This patch replaces the previous patch that was released (and subsequently recalled) as v10.0.2. #942

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.3/MapboxMaps.zip?access_token=<access-token>

v10.2.0-rc.1

02 Dec 20:28
7d9359b
Compare
Choose a tag to compare
v10.2.0-rc.1 Pre-release
Pre-release

Dependency requirements:

  • Compatible version of MapboxCoreMaps: v10.2.0-rc.1
  • Compatible version of MapboxCommon: v21.0.0-rc.2
  • Compatible version of Xcode: Tested with Xcode 12.5 and 13.1
  • Compatible version of macOS: Tested with version 11.6.1

Changes

View Annotations

  • The view annotations API introduced in v10.2.0-beta.1 has been updated. (#846, #861)

Gestures

  • Panning behavior on pitched maps has been improved. Panning no longer begins while the touch location is above the horizon, deceleration is disabled if the pan ends above the horizon, and the implementation of pan deceleration has been updated to avoid the sensitive portion of the map near the horizon. These changes help to reduce the incidence of the map moving unexpectedly far when flinging toward the horizon. (#888)
  • Additionally, the drag sensitivity around and above the horizon has been reduced. (#891)
  • v10.2.0-beta.1 introduced an updated pinch gesture implementation to address #775, but this change introduced a new issue #864. Additionally, the overall feel of the gesture was not as smooth. The default behavior has been reverted to match v10.1, but the v10.2.0-beta.1 behavior is still available as an experimental configuration option. (#890)

Location Puck

  • v10.2.0-beta.1 introduced a regression that prevented the location puck from appearing when a location permission request was required. (#862)

Persistent Layer APIs

  • The persistent layer APIs are no longer marked as experimental. In previous releases, import statements needed to be annotated with @_spi(Experimental) to expose these APIs. As of this release, that is no longer necessary. (#849)

Style

  • Style.localizeLabels(into:forLayerIds:) has been updated to only localize the primary localization and not the fall-through localizations. (#856)
  • StyleColor can now correctly deserialize rgba CSS colors that contain components with exponents. (#873)

Telemetry

  • The attribution dialog now reflects telemetry opt-in-out status correctly at first appearance. (#865)

Direct Download

  • This release fixes a bug that prevented experimental APIs from being available to developers who integrated the SDK via the direct download option. (#854)
  • It also prevents a swiftlint config file from being included as a bundled resource in the XCFramework. (#859)

Dependencies

  • MapboxCoreMaps has been updated to v10.2.0-rc.1 and MapboxCommon has been updated to v21.0.0-rc.2. (#891)
    • Reverts "Improve performance by avoiding re-layout of invisible fading tiles" because it caused regression on globe view projection zooming in/out.
    • Reduces drag sensitivity around and above horizon.

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.2.0-rc.1/MapboxMaps.zip?access_token=<access-token>

v10.2.0-beta.1

22 Nov 16:14
828fbad
Compare
Choose a tag to compare
v10.2.0-beta.1 Pre-release
Pre-release

Dependency requirements:

  • Compatible version of MapboxCoreMaps: 10.2.0-beta.1
  • Compatible version of MapboxCommon: 21.0.0-rc.1
  • Compatible version of Xcode: Tested with Xcode 12.5 and 13.1
  • Compatible version of macOS: Tested with macOS 11.6

Changes

  • Introduces UIView-based annotation API. (#776)
    • This feature is still in development, and the API is expected to change in the next prerelease.
    • To try it out, use the methods on [MapView.viewAnnotation](https://docs.mapbox.com/ios/maps/api/10.2.0-beta.1/Classes/ViewAnnotationManager.html).
  • Fixed an issue where camera animations triggered with startAnimation(afterDelay:) could appear jerky after a pan gesture. (#789)
  • Refactors location-related components for increased testability and reliability. (#765)
    • Location.location is now public to allow access to the underlying CLLocation value.
    • Location.accuracyAuthorization has been added.
    • Location.init(location:heading:accuracyAuthorization:) has been added. Prefer this initializer over the older init(with:heading:) when creating instances of Location
    • Style's internal func addPersistentLayer(_ layer: Layer, layerPosition: LayerPosition? = nil) throws is now @_spi(Experimental) public
    • LocationManger.consumers now returns a copy of the underlying hash table. Previously, the actual instance was returned which allowed consuming code to modify the LocationManager's internal state.
    • LocationPermissionsDelegate now relays errors from the underlying location provider
    • LocationManager.updateHeadingForCurrentDeviceOrientation() no longer has any effect (what it did previously is now handled automatically)
    • Heading updates that arrive prior to a location update are now stored and delivered to LocationConsumers as soon as a location is available.
    • LocationConsumers now receive a new Location when the accuracy authorization changes.
    • LocationManager's implementation of the LocationProviderDelegate protocol now does nothing. The internal LocationProducer is now the LocationProviderDelegate
    • When a custom location provider is set on LocationManager, an instance of EmptyLocationProviderDelegate is set as the delegate of the old location provider as a defensive measure to avoid receiving any further delegate messages from the old provider. It would have been preferable to set the location provider's delegate to nil, but the protocol does not allow it and cannot be changed in a non-breaking way.
    • LocationManager (via LocationProducer) now starts & stops updating on the location provider based on whether there are any consumers. It handles the case where the final consumer is deinited (since it only holds weak references to them) by stopping the updating as soon as the next location provider delegate method is invoked.
  • Fixes an issue where cameraChanged events during pan and pinch gestures would repeatedly emit the initial camera state, interleaved with the updated state. (#837)
  • Optimizes tap handling performance by doing a single call to queryRenderedFeatures in AnnotationOrchestrator, rather than in each annotation manager. (#840)

Dependencies

  • Updates MapboxCoreMaps to v10.2.0-beta.1. (#836)
    • Features ✨ and improvements 🏁
      • Add heatmap layer support to globe view
      • Add circle layer support to globe
      • Improve performance for querying large number of features
      • Cache layer layout key inside layer, so that it is not re-evaluated at every parse of the every tile
      • Model layer now supports loading of external gltf files
      • Add cancelable Query Rendered Features API to the Map interface
      • Core renderer prints its version on initialization
      • Introduce experimental Map.setMemoryBudget method for setting memory budget for a Map and runtime "resource-budget" property for data sources
      • Improve performance by avoiding re-layout of invisible fading tiles
      • Reduce memory consumption of a model layer by avoiding duplicate texture uploads
      • Introduce ViewAnnotation API and corresponding support in gl-native
    • Bug fixes 🐞
      • Release all unused resources when Map.reduceMemoryUse is invoked
      • Fix crash for the case when an empty fill extrusion bucket is tried to be rendered
      • Fix transparency issues with value < 0.5 for models rendered by the model layer
      • Fix regression where setting the same geojson source URL did not refresh the data
      • Fix symbol layers with variable anchor placement not being placed correctly on globe view
      • Fix crash in symbol reprojection code caused by division by zero
      • Fix issue with bounds constraining behavior when terrain is enabled
  • Updates MapboxCommon to v21.0.0-rc.1. (#836)

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.2.0-beta.1/MapboxMaps.zip?access_token=<access-token>

v10.1.0

04 Nov 21:27
4c58ce3
Compare
Choose a tag to compare

Dependency requirements:

  • Compatible version of MapboxCoreMaps: v10.1.0
  • Compatible version of MapboxCommon: v20.1.0
  • Compatible version of Xcode: Tested with Xcode 12.5 and 13.1
  • Compatible version of macOS: Tested with macOS 11.6.1

Changes

Features and Improvements

  • PointAnnotation.Image's image: UIImage and name: String fields are now public. (#753)
  • The gesture- and animation-in-progress flags are now set on MapboxMap during gestures and animations. (#754)
    • This improves performance and resolves raster tile rendering issues.
  • GestureOptions.pinchRotateEnabled has been added to allow disabling the rotation aspect of the pinch gesture. (#779)

Bug fixes

  • The experimental MapView snapshot API has been updated to work on iOS 15. (#760)
  • Anchor is now treated as a constant for ease(to:) animations. (#772)
    • This results in an less surprising API and fixes issues with the double-{tap,touch}-to-zoom gestures.
    • If you need to animate the anchor, you can still use the makeAnimator* APIs
  • Increases the rate of pan gesture deceleration on pitched maps. (#773)
    • Pan gesture deceleration is now completely disabled if pitch exceeds 60 degrees.
    • This approach is a first attempt at mitigating issues with panning around or near the horizon on pitched maps that resulted in much higher than desired map displacement.
  • The following fixes accompanied the updates to MapboxCoreMaps and MapboxCommon (#807):
    • Fix rendering artifact when some of the model layer models may have wrong placement when globe view projection is used
    • Fix rare heatmap flickering when zooming the map
    • Fix an issue where an Observable event could be dispatched on a thread different from the subscription thread
    • Fix an issue where promoteId parameter for VectorSource was overwritten when source TileJSON is loaded
    • Relax numeric property getter in queryFeatureExtensions API, so that cluster_id property can be double or signed integer
    • Move MBMTask, MBMClient and MBMMetalViewProvider interfaces to internal MapboxCoreMaps module, so that we avoid class name clashes with Swift.Task
    • UIImage instances that have padded rows are now handled correctly during conversion to MBMImage. This fixes the "mismatched image size" errors that were reported when trying to add dynamically-rendered images to the style (or to an annotation).

Dependencies

  • Updates to MapboxCoreMaps v10.1.0 and MapboxCommon v20.1.0. (#807)

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.1.0/MapboxMaps.zip?access_token=<access-token>

v10.1.0-rc.1

28 Oct 20:25
Compare
Choose a tag to compare
v10.1.0-rc.1 Pre-release
Pre-release

Dependency requirements:

  • Compatible version of MapboxCoreMaps: v10.1.0-rc
  • Compatible version of MapboxCommon: v20.1.0-rc.2
  • Compatible version of Xcode: Tested with 12.5
  • Compatible version of macOS: Tested with 11.6 (macOS Big Sur)

Changes

Bug fixes

  • Fixed an issue with UIImage conversion that led to a "mismatched image size" error. (#790)

Dependencies

Update to MapboxCoreMaps v10.1.0-rc and MapboxCommon v20.1.0-rc.2. (#790)

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.1.0-rc.1/MapboxMaps.zip?access_token=<access-token>

v10.1.0-beta.1

21 Oct 19:32
Compare
Choose a tag to compare
v10.1.0-beta.1 Pre-release
Pre-release

Dependency requirements:

  • Compatible version of MapboxCoreMaps: v10.1.0-beta
  • Compatible version of MapboxCommon: v20.1.0-rc.1
  • Requires Swift Package Manager or CocoaPods
  • Tested in Xcode 12.5 on macOS 11.6 Big Sur

Changes

Features and Improvements

  • Make PointAnnotation.Image's fields public. (#753)
  • Set MapboxMap flags during gestures and animations. (#754)
  • Add GestureOptions.pinchRotateEnabled to configure whether the pinch gesture rotates the map. (#779)

Bug fixes

  • Fix experimental snapshot API for iOS 15. (#760)
  • Fixed an issue that caused queryFeatureExtension to fail. (#769)
  • Fixed a name collision between Swift symbols and MapboxCoreMaps.Task. (#769)
  • Treat anchor as constant for ease(to:) animations. (#772)
  • Decelerate more quickly (or not at all) on pitched maps. (#773)

Dependencies

  • Updated MapboxCoreMaps to v10.1.0-beta and MapboxCommon to 20.1.0-rc.1. (#769)

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.1.0-beta.1/MapboxMaps.zip?access_token=<access-token>

v10.0.1

15 Oct 18:12
Compare
Choose a tag to compare

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

06 Oct 21:02
Compare
Choose a tag to compare

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 addImage function. (#695)
  • [breaking] Updated generic layer and source methods on Style to not rely on type inference. This makes it easier to use the methods correctly in a wider variety of contexts. (#694)
    • layer(withId:) is now layer(withId:type:).
    • updateLayer(withId:update:) is now updateLayer(withId:type:update:).
    • source(withId:) is now source(withId:type:).
  • [breaking] Updated untyped variants of layer and source methods on Style to 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 now layer(withId:).
    • source(withId:type:) is now source(withId:).
  • [breaking] Removed experimental designation from the following APIs
    • Style.layer(withId:). (#694)
    • Style.source(withId:). (#694)
  • [breaking] layerProperty(for:property:) is now layerPropertyValue(for:property:) to avoid ambiguity. (#708)
  • [breaking] updateGeoJSONSource(withId:geoJSON:) is no longer generic, and works with any Turf GeoJSONObject. (#715)
  • [breaking] Setting the data property on a GeoJSON source via setSourceProperty(for:property:value:) or updateGeoJSONSource(withId:geoJSON:) is now asynchronous and never returns an error. Errors will be reported asynchronously via a MapEvents.EventKind.mapLoadingError event instead, which you can listen for using the MapboxMap.onNext and onEvery methods. (#732)

Gestures

  • [breaking] The methods of GestureManagerDelegate have been updated to provide more visibility into the gesture lifecycle. (#697)
    • gestureBegan(for:) is now gestureManager(_: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.singleTapGestureRecognizer has been added.
    • *AnnotationManager.tapGestureRecognizer has been removed.
  • Any touch event in the map now immediately disables camera animation. Temporarily disable user interaction on the MapView to 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.Image is now a struct (was previously an enum).
    • PointAnnotation.Image.default has been removed.
    • PointAnnotation.Image.custom has been replaced with PointAnnotation.Image.init(image:name:).
  • [breaking] Annotation managers are now kept alive by the AnnotationOrchestrator (MapView.annotations) until they are explicitly destroyed by calling mapView.annotations.removeAnnotationManager(withId:) or are implicitly destroyed by creating a second annotation manager with the same ID. (#725)
  • [breaking] The AnnotationManager protocol now conforms to AnyObject. (#725)
  • AnnotationOrchestrator.annotationManagersById has been added. This dictionary contains all annotation managers that have not been removed. (#725)

Turf & GeoJSON

  • [breaking] MapboxCommon.Geometry extension methods are now internal. (#683)
  • [breaking] TileRegionLoadOptions.init now takes a Geometry instead of a MapboxCommon.Geometry. (#711)
  • [breaking] QueriedFeature.feature is no longer optional. (#737)
  • Adds TileRegionLoadOptions.geometry that uses Turf Geometry. (#711)
  • Adds FeatureExtensionValue.init(value:features:) that works with Turf. (#717)
  • Adds FeatureExtensionValue.features that uses Turf Feature. (#717)
  • APIs that accept Turf Feature now allow Feature.identifier and .properties to be nil. (#717)
  • APIs that accept Turf Feature now ignore Feature.properties instead of crashing if it cannot be converted to [String: NSObject]. (#717)
  • Adds the ExpressionArgument.geoJSONObject(_:) case, which allows you to include a Turf.GeoJSONObject instance in an expression with the Expression.Operator.distance or Expression.Operator.within operator. (#730)

Camera

  • [breaking] Removed redundant CameraAnimationsManager.options. (#712)
    • Use MapboxMap.cameraBounds and MapboxMap.setCameraBounds(with:) instead.
    • MapboxMap.setCameraBounds(for:) has been renamed to setCameraBounds(with:)
  • [breaking] Refines OfflineRegionGeometryDefinition to use Turf types. (#706)
    • geometry is now of type Geometry instead of MapboxCommon.Geometry.
    • A Geometry-based init method has been added.
  • BasicCameraAnimator no longer updates the camera a final time after being stopped or canceled prior to running to completion. (#712)
  • BasicCameraAnimator.isReversed is 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.
  • [breaking] PreferredFPS has been removed. MapView.preferredFramesPerSecond now of type Int, rather than PreferredFPS. (#735)
  • [breaking] TypeConversionError has a new case unsuccessfulConversion. (#737)
  • MapboxCommon.HTTPServiceFactory.reset() has been added to release the HTTP service implementation. (#732)
  • Adds MapView.preferredFrameRateRange for devices using iOS 15.0 and up. (#735)
  • Adds TileStore.subscribe(_:) which can be used to observe a TileStore's activity. The API design deviates from Android's add/remove observer API so that the developer-provided TileStoreObserver can be wrapped into a MapboxCommon_Private.TileStoreObserver without 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 TileStoreObserver protocol. (#737)
  • [bugfix] Fix rendering artifacts for a model layer when model-opacity property 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>