Skip to content

Releases: mapbox/mapbox-maps-ios

v10.3.0-beta.1

13 Jan 11:14
3bec0bc

Choose a tag to compare

v10.3.0-beta.1 Pre-release
Pre-release

Dependency requirements:

  • Compatible version of MapboxCoreMaps: 10.3.0-beta.1
  • Compatible version of MapboxCommon: 21.1.0-beta.1
  • Compatible version of Xcode:
  • Compatible version of macOS:

Changes

  • Exposed triggerRepaint() to allow manual map repainting.
    (#964)
  • Exposed TransitionOptions to allow control over symbol fade duration.
    (#902)
  • Added Style.removeTerrain() to allow removing terrain. (#918)
  • Snapshotter initialization now triggers a turnstyle event. (#908)
  • Fixed a bug where 2D puck location was never set when location accuracy authorization was reduced. (#989)
  • Fixed a bug where setting LocationManager.options would cause the LocationProvider to be reconfigured. (#992)
  • Added Viewport API. (#996)

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

v10.2.0

15 Dec 17:49
f8f4bb5

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

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

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

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

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

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

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

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

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>