Releases: mapbox/mapbox-maps-ios
Releases · mapbox/mapbox-maps-ios
v10.5.0-rc.1
- Minimum compatible version of Xcode:
13.0.0
Changes
- Add support for runtime source properties. (#1267)
- Start location services lazily. (#1262)
- Fix localization crash on iOS 11 and 12. (#1278)
- Increase annotation tap target to conform to Apple Human Interface Guidelines. (#1283)
- Update to MapboxCoreMaps 10.5.0-rc.1 and MapboxCommon 21.3.0-rc.2. (#1281)
- Expose API to set memory budget for
MapboxMap. (#1288)
v10.4.3
- Compatible version of Xcode:
12.5.1
Changes
- Updates to MapboxCommon 21.2.1 to fix an issue with loading content from the cache. (#1271)
- Fixes an issue where location services were started before they were needed. (#1262)
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.4.3/MapboxMaps.zip?access_token=<access-token>
v10.5.0-beta.1
Changes
- Mitigate
OfflineRegionManager.mergeOfflineDatabase(for:completion)throwingTypeConversionError.unexpectedTypeon a successfull merge. IntroduceOfflineRegionManager.mergeOfflineDatabase(forPath:completion)as the correct way to merge offline database. (#1192) - Limit MapboxMap.point(for: CLLocationCoordinate2D) to the bounds of map view (#1195)
- Add support for app extensions. (#1183)
BasicCameraAnimator.cancel()and.stopAnimation()now invoke the completion blocks withUIViewAnimatingPosition.currentinstead of crashing with afatalErrorwhen invoked prior to.startAnimation()or.startAnimation(afterDelay:). (#1197)CameraAnimationsManager.stopAnimations()will now cancel all animators regardless of their state. Previously, only animators withstate == .activewere canceled. (#1197)- Fix animator-related leaks. (#1200)
- Improve AnyTouchGestureRecognizer's interaction with other gesture recognizers. (#1210)
- Expose convenience properties and methods to transform
CoordinateBounds. (1226) - Update annotation examples. (#1215)
- Add
Style.setLight(_:)to set light onto a style. UpdateBuildingExtrusionsExamplewith an example to set a light source on the style. (#1234) - Remove
FollowPuckViewportStateOptions.animationDuration, a workaround for the moving target problem. (#1228) - Deprecate
FollowPuckViewportStateOptions.animationDuration, a workaround for the moving target problem. (#1228) - Add map view example with
debugOptions. (#1225) - Introduce
line-trim-offsetproperty for LineLayer. (#1231) - Add
MapboxMap.coordinateBoundsUnwrapped. (#1241) - Update
DefaultViewportTransitionto solve the moving target problem. (#1245) - Increase deceleration cutoff threshold from 20 to 35 to prevent camera changes
after animation stops. (#1244) - API for using globe projection has been moved to
Style.setProjection(_:)andStyle.projectionand is no longer experimental. (#1235) - Add
OfflineRegion.getStatus(completion:). (#1239) - Add a prefix
maps-iosto all Log message's category. (#1250)
Dependencies
- Update to MapboxCoreMaps 10.5.0-beta.1 and MapboxCommon 21.3.0-beta.2. (#1235)
Breaking changes
⚠️ - Map projection API moved from Map to Style, in order to allow specifying the map projection in the style
- Automatic transition between the globe and mercator projection updated to appear visually more subtle.
Features ✨ and improvements 🏁
- Map render call optimized further by further reducing computational overhead.
- Layer properties transitions performance improved if the layer is transitioning to the same constant value or if transitioning from/to data-driven property.
- New line layer paint property introduced: '{"line-trim-offset", [trim-start, trim-end]}', to take the line trim-off percentage range based on the whole line range [0.0, 1.0]. The property will only be effective when 'line-gradient' property is set. The line part between [trim-start, trim-end] will be marked as transparent to make a line gradient a vanishing effect. If either 'trim-start' or 'trim-end' offset is out of valid range, the default range [0.0, 0.0] will be set.
- Globe view controls revamped for more intuitive interaction with touch controls.
- OfflineRegion::getStatus() API added to get the completion status and the local size of the existing legacy offline regions.
Bug fixes 🐞
- Dispatched in-flight events will not be delivered if 'unsubscribe' is called before an event is delivered.
- Transitions between globe and mercator projection do not cull tiles incorrectly anymore.
- Terrain-related camera issues fixed, previously making it appear under terrain, or incorrectly repositioned after exaggeration change.
- Terrain rendering disabled on GPUs not supporting Vertex Texture Fetch.
- Fixed a bug that occasionally prevented symbols from loading.
Dependency requirements:
- Compatible version of Xcode:
13.0.0
v10.4.2
v10.4.1
Dependency requirements:
- Compatible version of MapboxCoreMaps:
10.4.1 - Compatible version of MapboxCommon:
21.2.0 - Compatible version of Xcode:
12.5.1
Changes
- Revert to using metal view draw notifications (
setNeedsDisplay()instead ofdraw()). (#1216)- Fixes #1212
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.4.1/MapboxMaps.zip?access_token=<access-token>
v10.4.0
Changes
- Update to MapboxCoreMaps 10.4.1 and MapboxCommon 21.2.0. (#1190)
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.4.0/MapboxMaps.zip?access_token=<access-token>
v10.4.0-rc.1
- Compatible version of Xcode:
12.5.1
Changes Since v10.4.0-beta.1
MapView
- Enable explicit drawing behavior for metal view(call
draw()explicitly
instead ofsetNeedsDisplaywhen view's content need to be redrawn). (#1157)
Gestures
- Restore cancellation of animations on single tap. (#1166)
- The single tap gesture depends on the double tap to zoom in gesture's
failure. To avoid registering a single tap if there's subsequently a double
tap, when the first tap is detected, the SDK waits to see if there will be
a second tap before deciding which gesture was performed. This means there
will be a delay before the animations are canceled. If that delay is
unacceptable, disable the double tap to zoom in gesture, to allow the
single tap gesture to recognize immediately.
- The single tap gesture depends on the double tap to zoom in gesture's
Location
- Fix issue where invalid locations could be emitted when setting a custom
location provider. (#1172) - Fix crash in Puck2D when location accuracy authorization is reduced. (#1173)
Attribution
- Fix an issue where plain text source attribution was not populated in
attribution dialog. (#1163)
Camera Animations
BasicCameraAnimator.owneris now public. (#1181)- The animation owner for ease-to and fly-to animations is now
"com.mapbox.maps.cameraAnimationsManager". (#1181)
Dependencies
- Update to MapboxCoreMaps 10.4.0-rc.1 and MapboxCommon 21.2.0-rc.1. (#1158)
- Fixed too small bounds returned by
Map::latLngBoundsZoomForCamerawith
tilted view andMap::latLngBoundsZoomForCameraUnwrappedwhen viewing
>360° longitude.
- Fixed too small bounds returned by
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.4.0-rc.1/MapboxMaps.zip?access_token=<access-token>
v10.4.0-beta.1
Minimum Supported Versions
- iOS: 11.0
- Xcode: 12.5.1
- Swift: 5.4
MapView
- [Bug Fix] Prevent rendering in background by pausing/resuming display link in response to application or scene lifecycle events. (#1086)
Viewport
- [Bug Fix] Sync the updating animations of the
FollowPuckViewportStateand 2D/3D location pucks. This change also brings smooth animation to 3D pucks. (#1090)
Location
- [Feature] Add
LocationOptions.puckBearingEnabledto control whether the puck rotates to track the bearing source. (#1107)
Gestures
- [Feature] Add
GestureOptions.pinchPanEnabledand.pinchZoomEnabled. (#1092) - [Bug Fix] Fix issue where single tap and double tap to zoom in gestures could recognize simultaneously. (#1113)
- [Bug Fix] Fix camera change events being fired after map has stopped moving. (#1118)
- [Feature] Add
GestureOptions.focalPointproperty to allow restricting the point about which zoom and rotate gestures are applied. (#1122) - [Bug Fix] Fix an issue where pinch gesture emitted superfluous camera changed events and remove experimental
GestureOptions.pinchBehaviorproperty that was previously introduced as an imperfect workaround. (#1125, #1137)
Style
- [Feature] Expose public initializers for
LayerInfoandSourceInfoso that these values can be constructed when unit testing. (#1144)
View Annotations
- [Feature] Add
ViewAnnotationManager.removeAll()to remove all view annotations. - [Feature] Introduce APIs to observe view annotation frames and visibility: (#1136)
ViewAnnotationUpdateObserverprotocolViewAnnotationManager.addViewAnnotationUpdateObserver(_:)ViewAnnotationManager.removeViewAnnotationUpdateObserver(_:)
Ornaments
- [Feature] Exposed
UIViews for logo, compass, scale bar, and attribution button to enable positioning other views relative to them. (#1130)
Dependencies
- Update to MapboxCoreMaps 10.4.0-beta.1 and MapboxCommon 21.2.0-beta.1. (#1126)
Features ✨ and improvements 🏁
- Improve rendering performance by coalescing map updates when possible.
- Add
StyleManager::hasStyleImageAPI that checks whether an image is in the style or not. - Improve Snapshotter performance by using a lightweight scheduler instead of platform runloop.
- Map now waits on sprite sheet loading before rendering.
- Improve map rendering performance by avoiding calculations for all the non-transitional style layer paint properties.
- Enable using of tile pack scheme from TileJSON.
- Improve map rendering performance by decreasing de/allocations in map placement code.
- Avoid style layer properties transition calculation when
TransitionOptions::durationis set to 0. - Enable tile packs for DEM terrain tiles, it includes both Offline API and
TileStoreUsageMode::ReadAndUpdateresource option. - Render tiles with partial content while the glyph dependencies are loading.
- Canonicalize URLs and enable Offline API usage for the 3dtiles/v1 tiles.
Bug fixes 🐞
- Fix screen coordinate queries when using zero pitch and high zoom values.
- Add .xcframework bundle name for
MapboxCoreMaps. - Avoid possible crash at program exit caused by dummy tracer accessed after the destruction.
- Fix crash for the case when a map event is handled by an Observer of a destructed map.
- Fix shimmering artifact when pitched raster tiles with compressed textures are rendered.
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.4.0-beta.1/MapboxMaps.zip?access_token=<access-token>
v10.3.0
Dependency requirements:
- Compatible version of MapboxCoreMaps:
v10.3.2 - Compatible version of MapboxCommon:
v21.1.0 - Compatible version of Xcode:
12.5.1
Viewport
- Added Viewport API at
MapView.viewport(#996, #1040, #1050, #1058)- Sync the map camera with the location puck using
FollowPuckViewportState. - Show an overview of a geometry using
OverviewViewportState. - Animate a transition between following the puck and showing an overview using
DefaultViewportTransistion. - Build custom states and transitions by implementing
ViewportStateandViewportTransition. - To set the current state, use
Viewport.transition(to:transition:completion:). - This API is experimental, which means that while it is production-ready, we reserve the right to make breaking
API changes without a major version bump. To access the API, import the SDK with@_spi(Experimental) import MapboxMaps. - See the docs for full details: https://docs.mapbox.com/ios/maps/api/10.3.0/Viewport.html
- Sync the map camera with the location puck using
Known Issues
FollowPuckViewportStateandPuckType.puck2D()use different animation timing. The fix (#1090) will be shipped in a future release after further testing.
MapboxMap
- Exposed
triggerRepaint()to allow manual map repainting. (#964)
Style
- Exposed
TransitionOptionsto allow control over symbol fade duration. (#902) - Added
Style.removeTerrain()to allow removing terrain. (#918)
Snapshotter
Snapshotterinitialization now triggers a turnstile event. (#908)
Location
- Added static method
Puck2DConfiguration.makeDefault(showBearing:)which enables creating a 2D puck configuration with a bearing indicator. (#980) - 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
Puck2DConfiguration.accuracyRingColorand.accuracyRingBorderColorto enable customizing the color of the 2D puck accuracy ring. (#1057)
Gestures
- Removed pitch gesture change angle requirements to avoid map freezing during gesture. (#1089)
Ornaments
- Fixed compass button regression introduced in 10.3.0-rc.1. (#1083)
Legacy Offline
- Added new APIs for
OfflineRegion. You can nowsetMetadata,invalidateorpurgethe region. (#1026, #1060)
MapboxCoreMaps
Features ✨ and improvements 🏁
- Update mapbox-common to v21.1.0
- Improve performance for symbol layout rendering in continuous mode
- Introduce metadata setter API for the legacy offline region
- Optimize zooming on terrain and globe
- Thin out repeated line labels at overscaled tiles in order to avoid excessive memory usage
- Tile cache refrains from eviction of the tiles that are parents for the most recently added tile
- Remove experimental designation from persistent layer APIs
- Avoid re-creation of the available sprites set
- The tile cache clears tiles graphics data before performing the tiles eviction, when budget is set in megabytes
- Delete geometry tiles layout result on worker thread
- When memory budget in megabytes is set, engine will try to use ETC1 compression for raster layer to decrease GPU memory consumption
- Implements depth sorting per mesh and better transparency for models
- Implement Metal MSAA support
- Remove extra deallocations from render tree destructor
- Minor optimization related to globe mesh construction
- Fill extrusion layer support for globe view
- Limit the delayed network request maximum time in the scheduler task queue, and thus avoid excessive memory usage
- Line gradient is pre-calculated on worker thread during bucket creation. Line gradient gets updated only if the line-gradient layer property value is modified
Bug fixes 🐞
- Include geometry data buffer size when calculating total size of a tile
- Fix crash at application exit on iOS platform
- Fix screen coordinate queries when using zero pitch and high zoom values
- vector-tile updated to v1.0.4, fixing an end of buffer exception
- Reduces drag sensitivity around and above horizon
- Erase corrupt tiles from TileStore
- Add perspective correction for non-rectangular images
- Fix rendering artifacts when compressed and un-compresed raster tiles are rendered
- Fix globe rendering artifact on darwin platform when MSAA is enabled
- Fix a crash when using a custom layer on Metal with MSAA disabled
- Fixed terrain occluding 3D location indicator
- Avoid creating new symbol instances if the feature is outside of tile boundaries to avoid incorrect symbol cross tile indexing. In the meanwhile, disable draping for this layer otherwise symbol will only be shown on the tile that has the symbol instance created.
- Fix location indicator layer rendering when SwiftShader is used
- Fix fill extrusion disappearance after render tiles are returned from the tile cache when the source memory budget is set in megabytes
- Avoid possible crash at program exit caused by dummy tracer accessed after destruction
- Fix crash for the case when a map event is handled by an Observer of a destructed map
- Deliver event to observable subscribers even if observable is already destructed
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/MapboxMaps.zip?access_token=<access-token>
v10.3.0-rc.1
Dependency requirements:
- Compatible version of MapboxCoreMaps:
10.3.0-rc.1 - Compatible version of MapboxCommon:
21.1.0-rc.1 - Compatible version of Xcode:
12.5.1
Changes
- Added new APIs for
OfflineRegion. You can nowsetMetadata,invalidateorpurgethe region. (#1026, #1060) - Refined the Viewport API which was introduced in 10.3.0-beta.1. (#1040, #1050, #1058)
- Location puck improvements
Dependencies
- Update to MapboxCoreMaps
v10.3.0-rc.1(#1051)- Features ✨ and improvements 🏁
- Introduce metadata setter API for the legacy offline region
- Optimize zooming on terrain and globe
- Update mapbox-common to v21.1.0-rc.1
- Thin out repeated line labels at overscaled tiles in order to avoid excessive memory usage
- Bug fixes 🐞
- Fix crash at application exit on iOS platform
- Fix screen coordinate queries when using zero pitch and high zoom values
- Features ✨ and improvements 🏁
- Updates MapboxCommon to
21.1.0-rc.1(#1051)
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-rc.1/MapboxMaps.zip?access_token=<access-token>