Releases: mapbox/mapbox-maps-ios
Mapbox Maps: v10.0.0-beta.18.1
Dependency requirements:
- Compatible version of MapboxCoreMaps: v10.0.0-beta.20
- Compatible version of MapboxCommon: v11.0.1
- Compatible version of Xcode: 12.4
- Compatible version of MacOS: Big Sur
Changes
Features ✨ and improvements 🏁
Camera Animations
- A new
CameraTransition
struct has been introduced to allow better control on the "from" and "to" values of a camera animation (#282)- A mutable version of the
CameraTransition
struct is passed into every animation block.
- A mutable version of the
- Animations can only be constructor injected into
CameraAnimator
as part of themakeAnimator*
methods onmapView.camera
. - The
makeCameraAnimator*
methods have been renamed tomakeAnimator*
methods
Gestures
- Gestures now directly call
mapboxMap.__map.setCamera()
instead of using CoreAnimation
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-beta.18.1/MapboxMaps.zip?access_token=<access-token>
Mapbox Maps: v10.0.0-beta.18
Dependency requirements:
- Compatible version of MapboxCoreMaps: v10.0.0-beta.20
- Compatible version of MapboxCommon: v11.0.1
- Compatible version of Xcode: 12.4
- Compatible version of MacOS: Big Sur
Changes
Breaking changes ⚠️
-
MapView
- The initializer has changed to
public init(frame: CGRect, mapInitOptions: MapInitOptions = MapInitOptions(), styleURI: StyleURI? = .streets)
. MapOptions
has been renamedMapConfig
. A newMapOptions
has been introduced; its properties are required to initialize the underlying map object.- A
MapInitOptions
configuration struct has been introduced. It currently wraps bothResourceOptions
andMapOptions
and is used when initializing aMapView
. baseURL
andaccessToken
can no longer be set from a nib or storyboard. Instead a newMapInitOptionsProvider
protocol and anIBOutlet
onMapView
has been introduced to allow a customerMapInitOptions
to be provided to theMapView
. This provider is not used when initializing aMapView
programmatically.- The
Manager
suffix has been removed fromMapView.gesturesManager
,MapView.ornamentsManager
,MapView.cameraManager
,MapView.locationManager
, andMapView.annotationsManager
. BaseMapView.camera
has been renamed toBaseMapView.cameraOptions
.
- The initializer has changed to
-
Foundation
AccountManager
has been removed. A newCredentialsManager
replaces it. You can useCredentialsManager.default
to set a global access token.- MapboxCoreMaps protocol conformances have been encapsulated. (#265)
ObserverConcrete
has been removed.BaseMapView
no longer conforms toMapClient
orMBMMetalViewProvider
, and the methods they required are now internal.- The setter for
BaseMapView.__map
is now private Snapshotter
no longer conforms toObserver
, and the method it required is now internal.
- The
BaseMapView.__map
property has been moved toBaseMapView.mapboxMap.__map
. (#280) - A
CameraOptions
struct has been introduced. This shadows the class of the same name from MapboxCoreMaps and. This avoids unintended sharing and better reflects the intended value semantics of theCameraOptions
concept. (#284)
-
Dependencies
- Updated dependencies to MapboxCoreMaps 10.0.0-beta.20 and MapboxCommon 11.0.1
- ResourceOptions now contains a
TileStore
instance. Tile store usage is enabled by default, the resource optiontileStoreEnabled
flag is introduced to disable it. TileStore
no longer returns cached responses for 401, 403 and unauthorized requests.- Fixed a bug where
TileStore
would not invoke completion closures (when client code did not keep a strong reference to the tile store instance).
Features ✨ and improvements 🏁
- Introduced the
OfflineManager
API that manages style packs and produces tileset descriptors for use with the tile store. TheOfflineManager
andTileStore
APIs are used in conjunction to download offline regions and associated "style packs". These new APIs replace the deprecatedOfflineRegionManager
. Please see the newOfflineManager
guide for more details.
Bug fixes 🐞
- Fixed a crash in line layer rendering, where the uniform buffer size had an incorrect value.
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-beta.18/MapboxMaps.zip?access_token=<access-token>
Mapbox Maps: v10.0.0-beta.17
Dependency requirements:
- Compatible version of MapboxCoreMaps: v10.0.0-beta.19
- Compatible version of MapboxCommon: v11.0.0
- Compatible version of Xcode: 12.4
- Compatible version of MacOS: Big Sur
Changes
Breaking changes ⚠️
-
AnnotationManager
no longer conforms toObserver
and no longer has apeer
. (#246) -
AnnotationSupportableMap
is now internal. (#246) -
MapView
- Initializer has been changed to
public init(frame: CGRect, resourceOptions: ResourceOptions, glyphsRasterizationOptions: GlyphsRasterizationOptions = GlyphsRasterizationOptions.default, styleURI: StyleURI? = .streets)
. StyleURL
has been renamed toStyleURI
OrnamentSupportableMapView
is not internal.
- Initializer has been changed to
-
Ornaments
LayoutPosition
has been deprecated in favor ofOrnamentPosition
.LayoutVisibility
has been depracted in favor ofOrnamentVisibility
.showsLogoView
has been renamed to_showsLogoView
.showsCompass
andshowsScale
have been deprecated. Visibility properties can be used to set how the Compass and Scale Bar should be shown.
-
Foundation
cancelTransitions
has been renamed tocancelAnimations
.setCamera()
with individual parameters has been deprecated in favor ofsetCamera(to targetCamera: CameraOptions...)
which requiresCameraOptions
.- The following camera convenience functions have been removed:
public func transitionCoordinateBounds(newCoordinateBounds: CoordinateBounds, animated: Bool = false)
public func transitionCoordinateBounds(to newCoordinateBounds: CoordinateBounds, edgePadding: UIEdgeInsets, animated: Bool = false, completion: ((UIViewAnimatingPosition) -> Void)? = nil)
public func transitionVisibleCoordinates(newCoordinates: [CLLocationCoordinate2D], edgePadding: UIEdgeInsets, animated: Bool = false)
public func transitionVisibleCoordinates(to newCoordinates: [CLLocationCoordinate2D], edgePadding: UIEdgeInsets, bearing: CLLocationDirection, duration: TimeInterval, animated: Bool = false, completion: ((UIViewAnimatingPosition) -> Void)? = nil)
public func resetPosition()
public func resetNorth(_ animated: Bool = false)
- In
CameraAnimator
,fractionComplete
is now of typeDouble
anddelayFactor
now returns aDouble
. MapboxLogoView
has been renamed toLogoView
.MapboxLogoSize
has been renamed toLogoSize
.
-
Style
- Initializer is now marked as internal.
styleUri
property has been renamed touri
.- The
url
property fromStyleURL
has been removed.
-
Expressions
init(from: jsonObject)
andpublic func jsonObject()
have been removed.Element.op
has been renamed toElement.operator
.Argument.array
has been renamed toArgument.numberArray
.ValidExpressionArgument
has been renamed toExpressionArgumentConvertible
.
Bug fixes 🐞
- Fixes an issue that could prevent annotations from being selectable. (#246)
- Fixes an issue where some JSON layers are not be decoded correctly. (#248)
- Fixes an issue where the location puck was not animating. (#256)
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-beta.17/MapboxMaps.zip?access_token=<access-token>
Mapbox Maps: v10.0.0-beta.16
Dependency requirements:
- Compatible version of MapboxCoreMaps: 10.0.0-beta.17
- Compatible version of MapboxCommon: 10.0.2
- Compatible version of Xcode: 12.2+
- Compatible version of MacOS: Big Sur
Changes
Breaking changes ⚠️
- The
CameraManager.moveCamera
method has been removed. (#217) UIView.animate
is no longer supported. Instead, useCameraAnimators
. (#217)- Developers should make camera changes directly to
MapView
's camera
properties. Previously, changes could be applied toMapView.cameraView
. (#217) CameraAnimator
objects are managed by developers and should be stored by
developers to prevent the animations from falling out of scope.LocationOptions.showUserLocation
has been removed. Use
LocationOptions.puckType
instead, setting it tonil
if you do not want to
show the user location.LocationManager.showUserLocation
has also been
removed. (#203)- Make model layer internal and refactor for increased public API clarity
(#194, #198)ModelLayer
andModelSource
are now internalshouldTrackLocation
flag has been removed fromLocationConsumer
because
it was never usedPuckType.puck2D
's associated value is now non-optional. It still has a
default value corresponding to the previous behaviorLocationPuckManager
is now internal- Renaming:
LocationPuck
is nowPuckType
LocationOptions.locationPuck
is nowLocationOptions.puckType
LocationIndicatorLayerViewModel
is nowPuck2DConfiguration
PuckModelLayerViewModel
is nowPuck3DConfiguration
- Updates dependencies to MapboxCoreMaps 10.0.0-beta.17 and MapboxCommon 10.0.2.
(#193)- [rendering] Query rendered features now work for fill-extrusions when
terrain is enabled. - [rendering] Improved terrain rendering performance due to reduction of
loaded tiles.
- [rendering] Query rendered features now work for fill-extrusions when
- All layer paint/layout properties can be defined via expressions (#185)
- Added RawRepresentable conformance to StyleURL. Removed enum cases for older
style versions. (#168)
Features ✨ and improvements 🏁
- Introduced the platform-driven Drag API for shifting the map’s camera. (#217)
- Introduced
CameraAnimator
, a UIViewPropertyAnimator-based class for
animating camera changes. These animators should be created using
CameraManager.makeCameraAnimator
methods. (#217) - Gesture-driven camera changes have been updated to use camera animators. (#217)
- The
AnimatorOwner
enum has been added to track owners for individual
animators. (#217) CameraManager.fly(to:)
is now built on camera animators.zoom
,pitch
,
bearing
, andcenterCoordinate
keyframes are supported. (#217)- The getter for LocationManager.locationOptions is now public. (#209)
- Added function to get layer identifier for an annotation type. (#189)
- Add PreferredFPS.custom() to add support for custom preferred frames per
second values. (#157)
Bug fixes 🐞
- Fixes an issue in which the puck was not reflecting updates to its
configuration (#199)
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-beta.16/MapboxMaps.zip?access_token=<access-token>
Mapbox Maps: v10.0.0-beta.15
Dependency requirements:
- Compatible version of MapboxCoreMaps: v10.0.0-beta.16
- Compatible version of MapboxCommon: v10.0.0-beta.12
- Compatible version of Xcode: 12.2
- Compatible version of MacOS: Big Sur
Changes
Breaking changes ⚠️
- Updates MapboxCoreMaps to v10.0.0.beta.16 and MapboxCommon to v10.0.0-beta.12 (#152)
New Events API
- The above breaking change introduces the new Map Events API which will:
- Simplify the Map API and align it with other weakly typed interfaces (addStyleLayer, addStyleSource, etc.).
- Minimize the effort for addition of new events.
- Expose experimental events.
- Suppress events that a developer hasn't subscribed to.
- Automatically expose new events for Snapshotter (eliminating the need to modify MapObserver and MapSnapshotterObserver separately).
- Events that have been removed:
mapResumedRendering
mapPausedRendering
mapLoadingStarted
renderMapStarted
renderMapFinished
cameraWillChange
cameraIsChanging
- Events that have been renamed:
EventType.Map.mapLoaded
->EventType.Map.loaded
MapEvents.EventKind.cameraDidChange
->MapEvents.EventKind.cameraChanged
Direct download
Link to download binaries (append your own Mapbox access token scoped with DOWNLOADS:READ
):
Dynamic Bundle
https://api.mapbox.com/downloads/v2/mobile-maps-ios/releases/ios/10.0.0-beta.15/MapboxMaps-dynamic.zip?access_token=<access-token>
Static Bundle
https://api.mapbox.com/downloads/v2/mobile-maps-ios/releases/ios/packages/10.0.0-beta.15/MapboxMaps-static.zip?access_token=<access-token>
Mapbox Maps: v10.0.0-beta.14
Dependency requirements:
- Compatible version of MapboxCoreMaps: 10.0.0-beta.15
- Compatible version of MapboxCommon: 10.0.0-beta.11
- Compatible version of Xcode: 12.2
- Compatible version of MacOS: Big Sur
Breaking changes ⚠️
- Updates Turf to v2.0.0-alpha.3 (#133)
Features ✨ and improvements 🏁
- MapboxMaps now supports Apple Silicon. M1 Macs can now be used as development machines. (#48)
- MapboxMaps is now built from source when consumed via Swift Package Manager or Cocoapods. (#125, #118)
- Added SwiftUI example. (#78)
- Allow a developer to synchronously update a layer with one API call -- no longer have to retrieve and re-add a layer. (#85)
- MapboxMaps can now be built and tested using Swift Package Manager (#125)
Bug fixes 🐞
- Prevent pitch and zoom from exceeding limits. Also updates default maximum pitch to 85 degrees. (#103)
- Fixed an issue where quick zoom did not work at higher zoom levels. Also made the duration argument of the setCamera methods non-optional with default of 0. (#109)
- GestureManager.delegate is now weak (#134)
- Using heuristic to provide pan drift when the map is pitched (#120)
Direct download
Link to download binaries (append your own Mapbox access token scoped with DOWNLOADS:READ
):
Dynamic:
https://api.mapbox.com/downloads/v2/mobile-maps-ios/releases/ios/10.0.0-beta.14/MapboxMaps-dynamic.zip?access_token=<access-token>
Static:
https://api.mapbox.com/downloads/v2/mobile-maps-ios/releases/ios/packages/10.0.0-beta.14/MapboxMaps-static.zip?access_token=<access-token>
Mapbox Maps: v10.0.0-beta.13.1
Dependency requirements:
- Compatible version of MapboxCoreMaps: v10.0.0-beta.14.2
- Compatible version of MapboxCommon: v10.0.0-beta.9.2
- Compatible version of Xcode: 12.2
- Compatible version of MacOS: 10.15.7 Catalina
Changes
10.0.0-beta.13.1 - February 17. 2021
Breaking changes ⚠️
- Update Mapbox Common for iOS to v10.0.0-beta.9.2 and MapboxCoreMaps to v10.0.0-beta.14.2. (#115)
Bug fixes 🐞
- Fix issue where color components were in incorrect range (#112)
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/v10.0.0-beta.13.1/mapbox-maps-ios.zip?access_token=<access-token>
Mapbox Maps: v10.0.0-beta.13
Dependency requirements:
- Compatible version of MapboxCoreMaps: v10.0.0-beta.14.1
- Compatible version of MapboxCommon: v10.0.0-beta.9.1
- Compatible version of Xcode: Xcode 12.2
- Compatible version of MacOS: 10.15.7 Catalina
Breaking changes ⚠️
- Rely on consumer provided view models directly to customize location pucks (#86)
- Update Mapbox Common for iOS to v10.0.0-beta.9.1 and MapboxCoreMaps to v10.0.0-beta.14.1. (#89)
- Update to Turf v2.0.0-alpha.2 (#93)
Features ✨ and improvements 🏁
- Expose
presentsWithTransaction
property to better synchronize UIKit elements with theMapView
. (#94) - Add
MapEvents.styleFullyLoaded
. (#90)
Bug fixes 🐞
- Refactor Annotation "properties" (#70)
- Fix Inconsistent Camera Heading (#68)
- Fix issue where updates to ornament options were not honored (#84)
- Dictionaries passed to expressions are now sorted by default (#81)
- Fixed an issue where pan drift did not work correctly when bearing was non-zero. (#99)
- Fix issue where toggling
LocationOptions.showsUserLocation
resulted in options not being updated (#101) - Pan drift for pitched maps will be disabled. A solution for smooth drifting is being worked on. (#100)
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-beta.13/mapbox-maps-ios.zip?access_token=<access-token>
Mapbox Maps: v10.0.0-beta.12
Dependency requirements:
- Compatible version of MapboxCoreMaps: v10.0.0-beta.13
- Compatible version of MapboxCommon: v10.0.0-beta.8
- Compatible version of Xcode: 12.2
- Compatible version of MacOS: 10.15.7 Catalina
Changes
Announcement
V10 is the latest version of the Mapbox Maps SDK for iOS. v10 brings substantial performance improvements, new features like 3D terrain and a more powerful camera, modern technical foundations, and a better developer experience.
To get started with v10, please refer to our migration guide.
Known Issues
Annotations
- Annotation selection may have a false positive if the selection of an annotation occurs on the edge of the display.
- Point, line, and polygon colors cannot be customized.
- Point annotations may not be rendered when
PointAnnotation.properties
is non-nil.
Camera
- The camera can jump while pinching or panning.
UIViewPropertyAnimator
and keyframe animations do not work; please useUIView.animate
to selectively animate camera properties.
Ornaments
- Unable to toggle
scaleBar
andcompass
visibility. - Ornaments do not reposition after a navigation bar is displayed.
Style
- An
NSException
can occur when accessing symbol style layers that contain a value fortextField
usingStyle.getLayer()
.
3D Terrain
- 3D Terrain is in an experimental state.
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-beta.12/mapbox-maps-ios.zip?access_token=<access-token>