Changelog for Mapbox Maps SDK for Android
July 3, 2026 · View on GitHub
Mapbox welcomes participation and contributions from everyone.
16 KB Page Size Support: Starting with version 11.7.0 and 10.19.0, NDK 27 is supported with dedicated artifacts that include support for 16 KB page sizes. If your app does not require 16 KB page size support, you can keep using our default artifacts without
-ndk27suffix. For more information about our NDK support, see https://docs.mapbox.com/android/maps/guides/#ndk-support
main
Breaking changes ⚠️
- Add
CameraAnimatorType.VERTICAL_FOVenum constant. This is a source-breaking change for code that uses an exhaustivewhenoverCameraAnimatorTypewithout anelsebranch, which will no longer compile until the new case is handled.
Features ✨ and improvements 🏁
- Animate verticalFov along with other camera parameters.
- Introduce new experimental
ViewAnnotationManager.viewAnnotationAvoidRegionswhich allows to specify rectangular screen regions that view annotations should avoid. View annotations opt in to this behaviour via the new experimentalViewAnnotationOptions.enableAvoidRegionsoption.
11.26.0-rc.1 June 29, 2026
Features ✨ and improvements 🏁
- [compose] Introduce experimental
IndoorSelectorcomposable function available insideMapboxMap, displaying a scrollable floor-selection widget that appears automatically when an indoor building is in view. ExposesIndoorSelectorStatefor programmatic access to the current floor list and selected floor, and anonFloorClickedcallback for reacting to user selections. - [compose] Add
IndoorSelectorControlheadless composable insideMapIndoorSelectorScope: attaches the indoor plugin to anIndoorSelectorStatewithout rendering any UI, enabling custom floor-selector implementations. - [compose] Add
rotateBy,moveBy,pitchBy, andscaleBymethods toMapViewportStatefor incremental camera animations. - [compose] Add
rememberStyleImage(imageId, image9Patch: NinePatchImage)andremember9PatchStyleImage(imageId, bitmap: Bitmap)overloads for nine-patch images. - Introduce new experimental
ViewAnnotationOptions.enableSymbolLayerCollisionoption which allows view annotations to hide underlying map symbols to avoid visual clutter. By default, the full bounding box of the view annotation is used for collision detection. If your annotation has a non-rectangular shape, it is highly recommended to mark the specific subviews that should participate via the new experimentalView.mbxViewAnnotationCollisionBoxflag. - Support drawing view annotation collision boxes when
MapView.debugOptionsis set toCOLLISION. - Add
TileStoreoption to configure the ambient cache quota, allowing control over how much disk space is used for ambient cached tile data. - Animate verticalFov along with other camera parameters.
Bug fixes 🐞
- [compose] Pass the identifier as an input to
rememberSaveableinremember*SourceState,remember*LightState, andrememberTerrainStatefunctions so that changing the identifier correctly recreates the saved state. - Fix labels missing on some road segments due to multilinestring geometry parts being dropped during label merging.
- Fix View Annotations sometimes failing to appear on short line segments due to collision detection over-rejection.
- Fix worldview filter not applying correctly after being changed at runtime.
- Fix zoom interpolation expressions not working correctly when symbol layer appearances define different zoom stops for the same property.
- Fix icon cross-fade animation not rendering correctly for icons redefined across appearances.
- Fix symbols with elevation or z-offset not displaying when the map is both rotated and pitched.
- Fix inaccurate coordinate conversion when querying geographic coordinates over terrain.
- Fix
SecurityExceptioncrash on Android 12 (API 31–32) when the Maps SDK registers location broadcast receivers. - Fix a potential crash caused by a use-after-free when evicting decompressed tile data from memory.
- Internal fixes and performance improvements.
Dependencies
- Update gl-native to v11.26.0-rc.1, common to v24.26.0-rc.1.
11.21.8 June 25, 2026
Features ✨ and improvements 🏁
- Reduce per-frame rendering overhead when style properties are updated frequently.
Bug fixes 🐞
- Fix a crash caused by dereferencing a null index buffer when drawing symbols.
- Internal fixes and performance improvements.
Dependencies
11.25.0 June 11, 2026
Breaking changes ⚠️
MapView.setMaximumFpsandMapSurface.setMaximumFpsare now annotated@MainThread. Callers must invoke them from the main thread; off-main callers will see a lint warning.
Features ✨ and improvements 🏁
- [compose] Add Standard
IndoorLabelsfeatureset and indoor configuration options (showIndoor,showIndoorLabels,colorIndoorLabelHighlight,colorIndoorLabelSelect) for the Mapbox Standard style. - Add
useNativeFlingDecelerationoption toGesturesPluginthat usesOverScrollerfor physics-based fling deceleration instead of the legacyeaseToanimation, providing a more natural fling experience. - Throttle
MapboxMappost destroyed warning logs. - Expose
verticalFovinCameraOptions, allowing a custom vertical field of view to be set insetCamera,easeTo, andflyTo. - Allow using color string literals in
interpolateexpressions, including when set on style config at runtime. - Support using
line-progressinline-emissive-strength. - Add support for zoom-and-feature-dependent appearance conditions.
- Add client-side SD/HD road and traffic conflation, hiding redundant roads based on functional road class coverage with stencil-masked transitions and configurable opacity fade.
- Add animated cross-fade transitions for boolean style config options (e.g. switching HD roads on/off).
- Add an option to disallow expensive network requests in
loadStylePack.
Bug fixes 🐞
- Fix a
ConcurrentModificationExceptioncrash that could occur when a plugin was added or removed duringMapView.onDestroy. - Fix frame pacing breaking when the panel switches refresh-rate modes mid-session (VRR or per-UID
frameRateOverride).FpsManagernow updates itsscreenRefreshRatevia aDisplayManager.DisplayListenerinstead of only sampling once atonStart. - [maps-sdk] Fix Vulkan rendering being permanently disabled when the Android surface arrived before the native map was set. The renderer now defers setup and retries via
onMapSet()once the map is available. - Fix a crash that could occur while iterating map interactions when a callback modifies interaction state.
- Fix a use-after-free crash in the map caused by asynchronous tasks accessing a partially destroyed map instance.
- Fix a crash caused by dereferencing a null index buffer when drawing symbols.
- Fix a crash when an overriding terrain source was merged with another source from the same root style.
- Fix missing letters in the middle of text labels placed along lines elevated by terrain.
- Fix aliasing artifacts on lines with borders.
- Fix step expression evaluation when using uniform buffer objects.
- Improve symbol appearances performance for Vulkan backend.
- Fix rare process crashes during HTTP downloads (failure to create a temporary file, and an uncaught error while writing the response).
- Fix a crash sometimes occurring when using a custom raster source.
- Internal fixes and performance improvements.
Dependencies
11.25.0-rc.2 June 04, 2026
Bug fixes 🐞
- Internal fixes and performance improvements.
Dependencies
- Update gl-native to v11.25.0-rc.2, common to v24.25.0-rc.2.
11.25.0-rc.1 June 02, 2026
Breaking changes ⚠️
MapView.setMaximumFpsandMapSurface.setMaximumFpsare now annotated@MainThread. Callers must invoke them from the main thread; off-main callers will see a lint warning.
Features ✨ and improvements 🏁
- [compose] Add Standard
IndoorLabelsfeatureset and indoor configuration options (showIndoor,showIndoorLabels,colorIndoorLabelHighlight,colorIndoorLabelSelect) for the Mapbox Standard style. - Add
useNativeFlingDecelerationoption toGesturesPluginthat usesOverScrollerfor physics-based fling deceleration instead of the legacyeaseToanimation, providing a more natural fling experience. - Throttle
MapboxMappost destroyed warning logs. - Expose
verticalFovinCameraOptions, allowing a custom vertical field of view to be set insetCamera,easeTo, andflyTo. - Allow using color string literals in
interpolateexpressions, including when set on style config at runtime. - Support using
line-progressinline-emissive-strength. - Add support for zoom-and-feature-dependent appearance conditions.
- Add client-side SD/HD road and traffic conflation, hiding redundant roads based on functional road class coverage with stencil-masked transitions and configurable opacity fade.
- Add animated cross-fade transitions for boolean style config options (e.g. switching HD roads on/off).
- Add an option to disallow expensive network requests in
loadStylePack.
Bug fixes 🐞
- Fix a
ConcurrentModificationExceptioncrash that could occur when a plugin was added or removed duringMapView.onDestroy. - Fix frame pacing breaking when the panel switches refresh-rate modes mid-session (VRR or per-UID
frameRateOverride).FpsManagernow updates itsscreenRefreshRatevia aDisplayManager.DisplayListenerinstead of only sampling once atonStart. - [maps-sdk] Fix Vulkan rendering being permanently disabled when the Android surface arrived before the native map was set. The renderer now defers setup and retries via
onMapSet()once the map is available. - Fix a crash that could occur while iterating map interactions when a callback modifies interaction state.
- Fix a use-after-free crash in the map caused by asynchronous tasks accessing a partially destroyed map instance.
- Fix a crash caused by dereferencing a null index buffer when drawing symbols.
- Fix a crash when an overriding terrain source was merged with another source from the same root style.
- Fix missing letters in the middle of text labels placed along lines elevated by terrain.
- Fix aliasing artifacts on lines with borders.
- Fix step expression evaluation when using uniform buffer objects.
- Improve symbol appearances performance for Vulkan backend.
- Fix rare process crashes during HTTP downloads (failure to create a temporary file, and an uncaught error while writing the response).
Dependencies
- Update gl-native to v11.25.0-rc.1, common to v24.25.0-rc.1.
11.21.6 May 25, 2026
Features ✨ and improvements 🏁
- Improve anti-aliasing for line layers with
line-border-widthset.
Bug fixes 🐞
- Fix a crash that could occur when the map is destroyed while asynchronous operations are in progress.
Dependencies
11.24.3 May 27, 2026
Dependencies
11.24.2 May 20, 2026
Dependencies
11.24.1 May 19, 2026
Features ✨ and improvements 🏁
- Expose
FeaturesetFeature.originalFeatureproperty. - Add Vulkan rendering backend support (Public Preview). The Vulkan backend is published as a separate artifact (
android-core-vulkan/android-core-vulkan-ndk27) that replaces the default OpenGL-basedandroid-core. To use it, replace the default core dependency with the Vulkan variant. In yourbuild.gradle.ktsadd:
Known limitations:configurations.all { resolutionStrategy.dependencySubstitution { all { val requested = requested as? ModuleComponentSelector if (requested?.group == "com.mapbox.maps" && (requested.module == "android-core" || requested.module == "android-core-ndk27") ) { val vulkanModule = requested.module.replace("android-core", "android-core-vulkan") useTarget("com.mapbox.maps:$vulkanModule:${requested.version}") } } } }- Android 12 (API 31) or later is recommended. Earlier Android versions may exhibit GPU driver bugs, particularly on devices with Adreno GPUs.
- Only
arm64-v8ais supported. - No automatic fallback to OpenGL.
MapWidget(Android Auto) is not yet supported.- Custom layer API is not yet supported.
MapView.snapshot()is not yet supported.- Rain precipitation effect is not rendered (snow works).
- Add support for rendering landmark models with level-of-detail (LOD), improving performance and memory use for distant 3D landmarks.
- Improve additive blend mode rendering on line layers with high data density, and add the
line-blend-additive-clampstyle property for opting out of dynamic density mapping with a fixed value. - Set a default ambient cache quota of 1 GB and over-evict when the quota is exceeded to reduce eviction churn.
TileStore.create(path)is no longer supported (deprecated since v11.19). Only one TileStore instance per process is now supported.
Bug fixes 🐞
- Fix a crash that could occur when the map is destroyed while asynchronous operations are still in progress.
- Fix the
NetworkRestriction.DISALLOW_EXPENSIVEnetwork option not being respected, which could cause map requests to proceed over metered connections when configured otherwise. - Fix
isMetricUnits/distanceUnitssync in ScaleBar settings DSL generated by KSP codegen. - Fix style import config property updates being lost when applied while a concurrent import URL change was loading.
- Fix incorrect color output when applying a color LUT to premultiplied colors.
- Fix incorrect symbol elevation rendering on Mali GPUs (e.g. Google Pixel 9 Pro XL) caused by insufficient shader precision for large z-offset values.
- Fix a crash in the vector tile layer cache when a sibling tile was destroyed during cache reuse.
- Internal fixes and performance improvements.
Dependencies
11.24.0 May 18, 2026
This release has documentation issues and should not be used. Please use 11.24.1 instead.
Dependencies
11.21.8 June 25, 2026
Dependencies
11.21.7 June 01, 2026
Dependencies
11.21.6 May 25, 2026
Dependencies
11.21.5 May 15, 2026
Features ✨ and improvements 🏁
- Add animated transitions when toggling HD roads.
Bug fixes 🐞
- Fix a situation where updated import config properties were ignored after an import URL change.
Dependencies
11.23.1 May 11, 2026
Bug fixes 🐞
- Fix the
disallow_expensiveHTTP setting not being respected on Android; the SDK now binds requests to a non-metered network (e.g., Wi-Fi) when this flag is set, with Cronet on API 23+ and an OkHttp fallback on older API levels. - Fix a memory leak where
HttpClientinstances could not be garbage collected because callbacks held strong references back to the client. - Internal fixes and performance improvements.
Dependencies
11.22.3 May 07, 2026
Features ✨ and improvements 🏁
- Internal fixes and performance improvements.
Dependencies
11.24.0-rc.1 May 05, 2026
Features ✨ and improvements 🏁
- Expose
FeaturesetFeature.originalFeatureproperty. - Add Vulkan rendering backend support (Public Preview). The Vulkan backend is published as a separate artifact (
android-core-vulkan/android-core-vulkan-ndk27) that replaces the default OpenGL-basedandroid-core. To use it, replace the default core dependency with the Vulkan variant. In yourbuild.gradle.ktsadd:
Known limitations:configurations.all { resolutionStrategy.dependencySubstitution { all { val requested = requested as? ModuleComponentSelector if (requested?.group == "com.mapbox.maps" && (requested.module == "android-core" || requested.module == "android-core-ndk27") ) { val vulkanModule = requested.module.replace("android-core", "android-core-vulkan") useTarget("com.mapbox.maps:$vulkanModule:${requested.version}") } } } }- Android 12 (API 31) or later is recommended. Earlier Android versions may exhibit GPU driver bugs, particularly on devices with Adreno GPUs.
- Only
arm64-v8ais supported. - No automatic fallback to OpenGL.
MapWidget(Android Auto) is not yet supported.- Custom layer API is not yet supported.
MapView.snapshot()is not yet supported.- Rain precipitation effect is not rendered (snow works).
- Add support for rendering landmark models with level-of-detail (LOD), improving performance and memory use for distant 3D landmarks.
- Improve additive blend mode rendering on line layers with high data density, and add the
line-blend-additive-clampstyle property for opting out of dynamic density mapping with a fixed value. - Set a default ambient cache quota of 1 GB and over-evict when the quota is exceeded to reduce eviction churn.
TileStore.create(path)is no longer supported (deprecated since v11.19). Only one TileStore instance per process is now supported.
Bug fixes 🐞
- Fix
isMetricUnits/distanceUnitssync in ScaleBar settings DSL generated by KSP codegen. - Fix style import config property updates being lost when applied while a concurrent import URL change was loading.
- Fix incorrect color output when applying a color LUT to premultiplied colors.
- Fix incorrect symbol elevation rendering on Mali GPUs (e.g. Google Pixel 9 Pro XL) caused by insufficient shader precision for large z-offset values.
- Fix a crash in the vector tile layer cache when a sibling tile was destroyed during cache reuse.
- Internal fixes and performance improvements.
Dependencies
- Update gl-native to v11.24.0-rc.1, common to v24.24.0-rc.1.
11.21.4 May 05, 2026
Features ✨ and improvements 🏁
- Internal fixes and performance improvements.
Dependencies
11.23.0 April 29, 2026
Features ✨ and improvements 🏁
- Support symbol paint properties in appearances — symbol layers can now use feature-dependent appearances for paint properties (not only layout), enabling richer per-feature styling of text and icons.
- Improve rendering performance of feature cutouts — optimized depth sampling in the cutout shader yields noticeably smoother rendering when feature cutouts are enabled (e.g. elevated route with cutouts).
- TileStore can now store 3D landmark/navigation tile content types, unblocking their use in offline regions.
- Add support for USB import radius in TileStore — new import parameter for seeding offline tile packs from USB media within a configurable radius.
- Evict tiles based on LRU and optimize eviction — the default eviction policy now uses least-recently-used instead of expiration-based scoring, keeping frequently-viewed tiles around longer and making cleanup passes faster.
- Settings can be set on startup — the SDK now loads
persistent_settings.jsonandnon_persistent_settings.jsonfrom the app's internal storage directory at startup, allowing configuration changes without an app rebuild.
Bug fixes 🐞
- Fix attribution links accepting non-HTTP URI schemes.
- Fix a potential file descriptor leak that could cause resource exhaustion.
- Fix icons appearing at incorrect size when
icon-sizeis data-driven and a non-default scale factor is applied. - Fix fog incorrectly obscuring the globe when using a custom field of view.
- Fix tile data corruption causing integrity check failures for small tiles stored in the offline cache.
- Fix a crash that could occur when the tile store is destroyed while downloads are still being processed.
- Fix 3D models occasionally not rendering on first load on some devices, caused by background shader compilation not signaling the renderer when compilation completed.
- Fix a crash in
ConfigExpressionwhere dereferencing an empty optional caused undefined behaviour. - [compose] Fixed Composition leak in ViewAnnotation when annotations are removed from the map.
- [gestures] Fixed interaction leak in
setGesturesManagercausing native map interactions to accumulate. - [gestures] Added post-cleanup guard to prevent re-registering interactions or listeners after plugin cleanup.
Dependencies
11.22.1 April 28, 2026
Bug fixes 🐞
- [gestures] Fixed interaction leak in
setGesturesManagercausing native map interactions to accumulate. - [gestures] Added post-cleanup guard to prevent re-registering interactions or listeners after plugin cleanup.
Dependencies
11.21.3 April 23, 2026
Bug fixes 🐞
- Fix above-ground route line not rendering over tunnel geometry when cutout is active.
- Fix rendering artifacts on feature cutout geometries caused by incorrect shader clipping.
- Fix a potential crash in style configuration expression evaluation when a config value is unset.
Dependencies
11.23.0-rc.1 April 20, 2026
Bug fixes 🐞
- Fix attribution links accepting non-HTTP URI schemes.
- Fix a potential file descriptor leak that could cause resource exhaustion.
- [compose] Fixed Composition leak in ViewAnnotation when annotations are removed from the map.
- [compose] Fix Fragment lifecycle observer leak in ViewAnnotation on annotation removal.
Dependencies
- Update gl-native to v11.23.0-rc.1, common to v24.23.0-rc.1.
11.22.0 April 16, 2026
Features ✨ and improvements 🏁
- Expose
heightandminHeightproperties onStandardBuildingsFeature. - Deprecate
PointAnnotation.iconImagegetter. Reading this property exposes an internally generated image ID managed by the annotation manager. If you need a stable, reusable image ID, register the image in the style yourself via the Style API and pass the ID explicitly viaPointAnnotationOptions.withIconImage(String). In that case you are responsible for the image's lifecycle and must remove it from the style when no longer needed. - Internal fixes and performance improvements.
Bug fixes 🐞
- Fix native memory leak in
AnnotationManagerwhere bitmap style images were not removed when annotations were deleted. - Fix feature ID format mismatch in JNI marshaling where whole-number
doublefeature IDs (e.g.12345.0) were incorrectly serialized as"12345.000000"instead of"12345", causingsetFeatureStateto fail when using IDs obtained fromqueryRenderedFeatures. - [compose] Fix
MapboxMapcrash (place is called on a deactivated node) when used inside aLazyColumn.- [compose] Known limitation: on Compose Foundation 1.7+ a secondary crash (
Apply is called on deactivated node) may still occur whenMapboxMapis used inside aLazyColumnduring fast scrolling/item reuse because ofLazyColumnprefetch behavior. Workaround: pass a no-opLazyListPrefetchStrategytorememberLazyListState(); seeLazyColumnMapActivityfor an example.
- [compose] Known limitation: on Compose Foundation 1.7+ a secondary crash (
- Fix location indicator cutout appearing in the wrong position on devices with high pixel density.
- Fix lines with sub-pixel width being rendered thicker than intended.
- Fix tile data decompression by properly tracking compression state in tile storage.
- Fix potential ANR caused by a deadlock in lifecycle management.
- Fix tile store cleanup task incorrectly deleting in-progress downloads.
- Fix tiles failing to load on some Android devices when the server response is incomplete.
- Fix tunnel roads being clipped or missing near the top of the screen at high pitch angles when crossing tile boundaries.
- Fix stretchable icons used with
icon-text-fitdisappearing in some situations. - Fix dashed lines not rendering correctly when
line-dasharrayvalues are smaller than 1.
Dependencies
11.21.2 April 16, 2026
Features ✨ and improvements 🏁
- Improve rendering performance of feature cutouts
Bug fixes 🐞
- Fix tile cover issues for tunnels
Dependencies
11.20.3 April 14, 2026
Bug fixes 🐞
- Fix tile data decompression by properly tracking compression state in tile storage.
Dependencies
11.21.1 April 10, 2026
Features ✨ and improvements 🏁
- Deprecate
PointAnnotation.iconImagegetter. Reading this property exposes an internally generated image ID managed by the annotation manager. If you need a stable, reusable image ID, register the image in the style yourself via the Style API and pass the ID explicitly viaPointAnnotationOptions.withIconImage(String). In that case you are responsible for the image's lifecycle and must remove it from the style when no longer needed.
Bug fixes 🐞
- Fix native memory leak in
AnnotationManagerwhere bitmap style images were not removed when annotations were deleted. - Fix an issue where overscaled tiles from offline tile packs could delay fetching higher-resolution network tiles.
Dependencies
11.22.0-rc.1 April 08, 2026
Features ✨ and improvements 🏁
- Expose
heightandminHeightproperties onStandardBuildingsFeature. - Deprecate
PointAnnotation.iconImagegetter. Reading this property exposes an internally generated image ID managed by the annotation manager. If you need a stable, reusable image ID, register the image in the style yourself via the Style API and pass the ID explicitly viaPointAnnotationOptions.withIconImage(String). In that case you are responsible for the image's lifecycle and must remove it from the style when no longer needed. - Internal fixes and performance improvements.
Bug fixes 🐞
- Fix native memory leak in
AnnotationManagerwhere bitmap style images were not removed when annotations were deleted. - Fix feature ID format mismatch in JNI marshaling where whole-number
doublefeature IDs (e.g.12345.0) were incorrectly serialized as"12345.000000"instead of"12345", causingsetFeatureStateto fail when using IDs obtained fromqueryRenderedFeatures. - [compose] Fix
MapboxMapcrash (place is called on a deactivated node) when used inside aLazyColumn.- [compose] Known limitation: on Compose Foundation 1.7+ a secondary crash (
Apply is called on deactivated node) may still occur whenMapboxMapis used inside aLazyColumnduring fast scrolling/item reuse because ofLazyColumnprefetch behavior. Workaround: pass a no-opLazyListPrefetchStrategytorememberLazyListState(); seeLazyColumnMapActivityfor an example.
- [compose] Known limitation: on Compose Foundation 1.7+ a secondary crash (
- Fix location indicator cutout appearing in the wrong position on devices with high pixel density.
- Fix lines with sub-pixel width being rendered thicker than intended.
- Fix tile data decompression by properly tracking compression state in tile storage.
- Fix potential ANR caused by a deadlock in lifecycle management.
- Fix tile store cleanup task incorrectly deleting in-progress downloads.
- Fix tiles failing to load on some Android devices when the server response is incomplete.
Dependencies
- Update gl-native to v11.22.0-rc.1, common to v24.22.0-rc.1.
11.21.0 April 02, 2026
Bug fixes 🐞
- Fix tile store eviction failing to clean up files for decompressed tiles, causing gradual storage growth.
- Fix gaps in elevated route line rendering at ramp transitions and tile borders.
- Fix indicator cutout (location puck area) appearing in the wrong position on high-DPI displays.
- Fix incorrect shadow culling on fill-extrusion layers.
- Fix ambient occlusion not being clipped when fill-extrusion layers are clipped by clip layers.
- Fix clip layer updates not always refreshing clipped layers and shadows.
- Fix native memory leak in
AnnotationManagerwhere bitmap style images were not removed onDestroy. - Fix feature cutout rendering artifacts on some devices caused by insufficient shader precision.
- Fix rendering of stacked underground 3D roads.
- Fix a crash that could occur when the map is destroyed during style loading.
- Fix underground road geometry being clipped in orthographic projection with small viewports.
- Fix map flickering caused by stencil buffer conflicts between raster and hillshade layers.
- Fix potential ANRs when receiving location updates under heavy system load.
- Internal fixes and performance improvements.
Dependencies
11.20.2 March 25, 2026
Bug fixes 🐞
- Fix a bug in eviction logic for TileStore.
Dependencies
11.21.0-rc.1 March 23, 2026
Bug fixes 🐞
- Fix intermittent rendering artifacts (reversed/large bitmaps) on Android Auto caused by stale texture ID reuse in
BitmapWidgetRendererafter surface recreation. - Fix native memory leak in
AnnotationManagerwhere bitmap style images were not removed onDestroy. - Fix feature cutout rendering artifacts on some devices caused by insufficient shader precision.
- Fix rendering of stacked underground 3D roads.
- Fix a crash that could occur when the map is destroyed during style loading.
- Fix underground road geometry being clipped in orthographic projection with small viewports.
- Fix map flickering caused by stencil buffer conflicts between raster and hillshade layers.
- Fix potential ANRs when receiving location updates under heavy system load.
- Fix a bug in eviction logic for TileStore.
- Internal fixes and performance improvements.
Dependencies
- Update gl-native to v11.21.0-rc.1, common to v24.21.0-rc.1.
11.20.1 March 17, 2026
Bug fixes 🐞
- Internal fixes and performance improvements.
Dependencies
11.20.0 March 13, 2026
Features ✨ and improvements 🏁
- [compose] Add declarative animation API to experimental
Markercomposable with two animation triggers:appearAnimationanddisappearAnimation. Each trigger accepts a list ofMarkerAnimationEffectincludingwiggle(pendulum rotation),scale,fadeIn, andfadeOut. Effects can be customized with parameters (e.g.,scale(from = 0.5f, to = 1.5f),fade(from = 0.5f, to = 1.0f)) and combined for rich animations. SeeMarkersActivityexample for usage. - Improve FPS statistics logging when
mapView.setOnFpsChangedListener()is used with separate tracking for frame pacing skips and missed render frames for better performance debugging.
Bug fixes 🐞
- Fix
MapSurface.setMaximumFpsnot working correctly on secondary displays (e.g. Android Auto). UseContext.getDisplay()on API 30+ to get the actual display refresh rate instead of always using the primary display's rate. - Fix
PointAnnotationManager.iconImageBitmapsetter not registering the bitmap image with the style, causing group-level bitmap icons to be invisible. - Fix feature cutout artifacts at route overlaps.
- Fix a data race condition for
FillExtrusionlayer. - Fix several issues related to runtime symbol appearances switches.
- Fix disappearing icons after reducing memory use.
- Fix landmark POI image loads causes relayout for unrelated layers.
- Fix tilestore eviction logic to not block tilestore thread completely.
- Fix out-of-bounds issue for elevated line caused by an incorrect clipping result.
Dependencies
11.20.0-rc.1 March 03, 2026
Features ✨ and improvements 🏁
- [compose] Add declarative animation API to experimental
Markercomposable with two animation triggers:appearAnimationanddisappearAnimation. Each trigger accepts a list ofMarkerAnimationEffectincludingwiggle(pendulum rotation),scale,fadeIn, andfadeOut. Effects can be customized with parameters (e.g.,scale(from = 0.5f, to = 1.5f),fade(from = 0.5f, to = 1.0f)) and combined for rich animations. SeeMarkersActivityexample for usage. - Improve FPS statistics logging when
mapView.setOnFpsChangedListener()is used with separate tracking for frame pacing skips and missed render frames for better performance debugging.
Bug fixes 🐞
- Fix
MapSurface.setMaximumFpsnot working correctly on secondary displays (e.g. Android Auto). UseContext.getDisplay()on API 30+ to get the actual display refresh rate instead of always using the primary display's rate. - Fix
PointAnnotationManager.iconImageBitmapsetter not registering the bitmap image with the style, causing group-level bitmap icons to be invisible. - Fix feature cutout artifacts at route overlaps.
- Fix a data race condition for
FillExtrusionlayer. - Fix several issues related to runtime symbol appearances switches.
- Fix disappearing icons after reducing memory use.
- Fix landmark POI image loads causes relayout for unrelated layers.
- Fix tilestore eviction logic to not block tilestore thread completely.
- Fix out-of-bounds issue for elevated line caused by an incorrect clipping result.
Dependencies
- Update gl-native to v11.20.0-rc.1, common to v24.20.0-rc.1.
11.19.1 March 10, 2026
Dependencies
11.19.6 April 10, 2026
Bug fixes 🐞
- Internal fixes and performance improvements.
Dependencies
11.19.5 April 02, 2026
Bug fixes 🐞
- Internal fixes and performance improvements.
Dependencies
11.19.4 April 02, 2026
Bug fixes 🐞
- Fix overscaled offline tilepack tiles being showed after switching to online mode
Dependencies
11.19.3 March 31, 2026
Bug fixes 🐞
- Internal fixes and performance improvements.
Dependencies
11.19.2 March 25, 2026
Bug fixes 🐞
- Fix a bug in eviction logic for TileStore.
Dependencies
11.19.0 February 24, 2026
Features ✨ and improvements 🏁
- Introduce new
AnnotationConfig#slotNameproperty to allow to specify a slot to position annotation layer. - Introduce experimental
queryRenderedRasterValuesAPI for querying the rendered raster values on the map at a specific screen coordinate. - Deprecate
Tilestore.create(path: String)instead useTileStore.setRootPath(). - Improve data serialization speed when using
LineStringorMultiPointinGeoJsonSource. - Introduce new
LineLayer.lineElevationGroundScaleproperty to scale elevated lines with terrain exaggeration. - Promote elevated lines properties to stable:
LineLayer.lineZOffsetandLineLayer.lineElevationReference. - Introduce experimental
SymbolScaleBehaviorAPI to automatically scale map symbols (icons and text) based on system accessibility text size settings. SetMapboxMap.symbolScaleBehaviorproperty to configure:SymbolScaleBehavior.system(automatic scaling),SymbolScaleBehavior.system(mapping)(custom mapping function), orSymbolScaleBehavior.fixed(scaleFactor)(fixed scale, default is 1.0). Valid scale factor range is [0.8, 2.0]. Automatic scaling is opt-in; symbols default to fixed 1.0x scale. - General fixes and performance improvements.
Bug fixes 🐞
- Fix rare scenario where map render surface size was wrong.
- Respect
animationDurationMswhen customOverviewViewportStateOptions.animationDurationMsis set. - Fix point View Annotation flickering and hiding on moving anchor out of screen.
- Fixed a potential leak of animators, which resulted in the absence of MapIdle events.
- Fix elevated line bevel join artifacts at sharp corners.
- [compose] Improved reliability of attribution list updates on source change.
- Fix duplicate name detection bug in symbol appearance conversion.
- Fix a crash when using feature dependent appearances with images and default appearance image is empty.
Dependencies
11.19.0-rc.1 February 12, 2026
Features ✨ and improvements 🏁
- Improve data serialization speed when using
LineStringorMultiPointinGeoJsonSource. - Introduce new
LineLayer.lineElevationGroundScaleproperty to scale elevated lines with terrain exaggeration. - Promote elevated lines properties to stable:
LineLayer.lineZOffsetandLineLayer.lineElevationReference. - Introduce experimental
SymbolScaleBehaviorAPI to automatically scale map symbols (icons and text) based on system accessibility text size settings. SetMapboxMap.symbolScaleBehaviorproperty to configure:SymbolScaleBehavior.system(automatic scaling),SymbolScaleBehavior.system(mapping)(custom mapping function), orSymbolScaleBehavior.fixed(scaleFactor)(fixed scale, default is 1.0). Valid scale factor range is [0.8, 2.0]. Automatic scaling is opt-in; symbols default to fixed 1.0x scale. - General fixes and performance improvements.
Bug fixes 🐞
- Fixed a potential leak of animators, which resulted in the absence of MapIdle events.
- Fix elevated line bevel join artifacts at sharp corners.
- [compose] Improved reliability of attribution list updates on source change.
Dependencies
- Update gl-native to v11.19.0-rc.1, common to v24.19.0-rc.1.
11.18.2 February 09, 2026
Bug fixes 🐞
- Fix disappearing icons after reducing memory use.
- Fix Point View Annotation flickering and hiding on moving anchor out of screen
Dependencies
11.18.1 January 29, 2026
Dependencies
Features ✨ and improvements 🏁
- Add
ModelSourcesupport withModelSourceModel,ModelMaterialOverride, andModelNodeOverrideto enable interactive 3D models. Material overrides allow customization of color, emissive strength, opacity, and color mix intensity. Node overrides enable control of model part transformations such as rotating doors, landing gear, or propellers. Models can be updated via source-driven approach (modifyingModelSource.modelsdirectly) or feature-state driven approach (using expressions with feature state for dynamic control). For implementation examples, seeInteractive3DModelFeatureStateActivity(Compose),Interactive3DModelSourceActivity(View), andAnimated3DModelActivity(Compose).
11.19.0-beta.1 January 28, 2026
Features ✨ and improvements 🏁
- Introduce experimental
queryRenderedRasterValuesAPI for querying the rendered raster array value at a point on the map. - Introduce new
AnnotationConfig#slotNameproperty to allow to specify a slot to position annotation layer. - Introduce experimental
queryRenderedRasterValuesAPI for querying the rendered raster values on the map at a specific screen coordinate. - Introduce
StyleAttributionsChangedevent for detecting map attributions changes - Deprecate
Tilestore.create(path: String)instead useTileStore.setRootPath().
Bug fixes 🐞
- Fix rare scenario where map render surface size was wrong.
- Respect
animationDurationMswhen customOverviewViewportStateOptions.animationDurationMsis set. - Fix point View Annotation flickering and hiding on moving anchor out of screen.
Dependencies
- Update gl-native to v11.19.0-beta.1, common to v24.19.0-beta.1.
Features ✨ and improvements 🏁
- Rename
IndoorManager.setOnIndoorUpdatedCallbacktoIndoorManager.subscribeOnIndoorUpdatedwith returned Cancelable support. Add flow-basedval onIndoorUpdated: Flow<IndoorState>API.
11.18.0 January 15, 2026
Breaking changes ⚠️
- Remove line-cutout-width and change line-cutout-opacity default to 1.0
Features ✨ and improvements 🏁
- Add
ModelLayer.modelAllowDensityReductionproperty to disable density reduction in model layers. - Add Standard Style color and 3D configuration options:
colorBuildings,colorCommercial,colorEducation,colorIndustrial,colorLand,colorMedical,show3dBuildings,show3dFacades,show3dLandmarks, andshow3dTrees. - Introduce experimental
AttributionControlcomposable function that exposesAttributionStateprogrammatically, enabling developers to build custom Attribution UI outside of the map while maintaining compliance with Mapbox ToS requirements. - Introduce experimental indoor floor selector plugin. The plugin is not included in the default plugin list and must be explicitly added to
MapInitOptions.plugins. It requires a style with indoor data and special access to indoor mapping features. To request more information, please use this form. - Add experimental
shadowDrawBeforeLayerproperty to directional light to allow specifying the position in the layer stack for drawing shadows on the ground. - [tile_store] Add
TileStore.setRootPath()method to set tilestore path to be used by default. - Faster polygon triangulation for complex polygons.
- Improved handling of occluded symbols with
text-occlusion-opacityandicon-occlusion-opacityproperties. - General fixes and performance improvements.
Bug fixes 🐞
- Fix
userDatapayload foronSourceDataLoadedevent during GeoJSON partial update. - Fix guard rail placement.
- Fix changes in brightness not always getting applied.
- Fix leaking Vertex Array Objects.
- Reset style fog, snow and rain impl when switching to a new style.
- Fix rendering artefacts when persistent buffer mapping is enabled.
- Fix Coercion expression possibleOutputs result for Array type.
- Fix a crash when jumping between different projections.
- Fixes for placements with
icon-optional,text-optional, and missing parts.
Dependencies
11.18.0-beta.1 December 17, 2025
Breaking changes ⚠️
- Remove line-cutout-width and change line-cutout-opacity default to 1.0
Features ✨ and improvements 🏁
- Add
ModelLayer.modelAllowDensityReductionproperty to disable density reduction in model layers. - Add Standard Style color and 3D configuration options:
colorBuildings,colorCommercial,colorEducation,colorIndustrial,colorLand,colorMedical,show3dBuildings,show3dFacades,show3dLandmarks, andshow3dTrees. - Introduce experimental
AttributionControlcomposable function that exposesAttributionStateprogrammatically, enabling developers to build custom Attribution UI outside of the map while maintaining compliance with Mapbox ToS requirements. - Introduce experimental indoor floor selector plugin. The plugin is not included in the default plugin list and must be explicitly added to
MapInitOptions.plugins. It requires a style with indoor data and special access to indoor mapping features. - Add experimental
shadowDrawBeforeLayerproperty to directional light to allow specifying the position in the layer stack for drawing shadows on the ground. - [tile_store] Add method to set tilestore path to be used by default.
- Faster polygon triangulation for complex polygons.
- General fixes and performance improvements.
Bug fixes 🐞
- Fix
userDatapayload foronSourceDataLoadedevent during GeoJSON partial update. - Fix guard rail placement.
- Fix changes in brightness not always getting applied.
- Fix leaking Vertex Array Objects.
- Reset style fog, snow and rain impl when switching to a new style.
- Fix rendering artefacts when persistent buffer mapping is enabled.
- Fix Coercion expression possibleOutputs result for Array type.
- Fix a crash when jumping between different projections.
Dependencies
- Update gl-native to v11.18.0-beta.1, common to v24.18.0-beta.1.
11.17.2 February 24, 2026
Bug fixes 🐞
- Avoid placing occlusion layers after location indicator layer.
- Properly handle
CoordinateBoundsduring conversion to internal type.
Dependencies
11.17.1 December 11, 2025
Bug fixes 🐞
- Reset style fog, snow and rain impl when switching to a new style.
- Fix changes in brightness not always getting applied.
- Fix occlusion of location indicator in tunnels.
- Fix leaking Vertex Array Objects.
Dependencies
11.17.0 December 04, 2025
Breaking changes ⚠️
- Require passing required argument to the constructor of experimental
GeofencingState.Builder,GeofencingError.Builder,GeofencingEvent.BuilderandGeofencingOptions.BuilderAPIs.
Features ✨ and improvements 🏁
- Promote Geofencing APIs to stable, remove
MapboxExperimentalannotations from Geofencing APIs. - Add TileStore improvements and optimizations.
- Promote
ModelLayerto stable. - Add
SymbolLayer.occlusionOpacityMode,SymbolLayer.iconColorBrightnessMax,SymbolLayer.iconColorBrightnessMin,SymbolLayer.iconColorContrastproperties. - Add
FillExtrusionLayer.castShadowsproperty. - Add
GeoJsonSource.minZoomproperty. - Add
RasterArraySource.volatileexperimental property. - Make
line-emissive-strengthproperty data-driven. - Add experimental
MapboxMap.setFeatureStateExpression(),removeFeatureStateExpression(), andresetFeatureStateExpressions()APIs to efficiently update feature state for multiple features at once using expressions. - Improved error reporting for offline tile region downloads on Android.
- Enhanced reliability of network connections by improving how Cronet timeouts are handled.
- Added experimental
MapOptions.Builder.scaleFactor()for scaling icons and texts. - Add click gesture support to
Markercomposable withonClickparameter - Introduced
ScaleBarSettings.distanceUnitsproperty supporting metric, imperial, and nautical units, replacing the booleanisMetricUnitsproperty. - Added
fuelingStationModePointOfInterestLabelsconfiguration option to Mapbox Standard and Standard Satellite styles. Control the visibility of fuel station and electric charging station POI labels with options: "default" (shows both), "fuel" (fuel stations only), "electric" (charging stations only), or "none" (hides both). - Introduce experimental support for Appearances. The Appearances layer property defines sets of appearance objects used to quickly change the visual styling of a layer based on a condition using feature-state. See
AppearancesActivityin example application for further details. - Memory allocation improvements
Bug fixes 🐞
- Fix config expression evaluation to properly check dependencies in nested value expressions.
- Fix issue with shadows showing up on top of tunnel roads.
- Fix view-aligned symbols with road elevation being cutout.
- Fix camera listener not unsubscribed when disabling ScaleBar via
updateSettings { enabled = false } - Fixed a crash when switching map styles quickly.
- Fixed a threading bug to eliminate 3D rendering issues and instability.
- Internal fixes and performance improvements.
- Fix multiple crashes during style switches related to terrain rendering, texture management, and image cleanup.
- Fix line patterns not elevating properly on HD roads.
- Fix rendering of TileStore tiles when TileStore is used as disk cache and user is offline.
- Fix performance regression for
distanceandwithinexpressions when processing large GeoJSON datasets. - Fix GeoJSON tiled model disappearance during fast zoom interactions.
- Fix rendering issues when switching between globe and mercator projections.
- Logging improvements to reduce noise and duplication.
Dependencies
11.17.0-rc.3 November 28, 2025
Features ✨ and improvements 🏁
- Promote Geofencing APIs to stable, remove
MapboxExperimentalannotations from Geofencing APIs.
Dependencies
- Update gl-native to v11.17.0-rc.3, common to v24.17.0-rc.3.
11.17.0-rc.2 November 21, 2025
Dependencies
- Update gl-native to v11.17.0-rc.2, common to v24.17.0-rc.2.
11.17.0-rc.1 November 20, 2025
Features ✨ and improvements 🏁
- Promote
ModelLayerto stable. - Add
SymbolLayer.occlusionOpacityMode,SymbolLayer.iconColorBrightnessMax,SymbolLayer.iconColorBrightnessMin,SymbolLayer.iconColorContrastproperties. - Add
FillExtrusionLayer.castShadowsproperty. - Add
GeoJsonSource.minZoomproperty. - Add
RasterArraySource.volatileexperimental property. - Make
line-emissive-strengthproperty data-driven. - Add experimental
MapboxMap.setFeatureStateExpression(),removeFeatureStateExpression(), andresetFeatureStateExpressions()APIs to efficiently update feature state for multiple features at once using expressions.
Bug fixes 🐞
- Fix camera listener not unsubscribed when disabling ScaleBar via
updateSettings { enabled = false }
Dependencies
- Update gl-native to v11.17.0-rc.1, common to v24.17.0-rc.1.
11.17.0-beta.2 November 14, 2025
Features ✨ and improvements 🏁
- Improved error reporting for offline tile region downloads on Android.
- Enhanced reliability of network connections by improving how Cronet timeouts are handled.
Bug fixes 🐞
- Fixed a crash when switching map styles quickly.
- Fixed a threading bug to eliminate 3D rendering issues and instability.
- Internal fixes and performance improvements.
Dependencies
- Update gl-native to v11.17.0-beta.2, common to v24.17.0-beta.2.
11.16.4 November 14, 2025
Bug fixes 🐞
- Internal fixes and performance improvements.
Dependencies
11.16.3 November 13, 2025
Bug fixes 🐞
- Internal fixes and performance improvements.
- Fix multiple crashes during style switches.
Dependencies
11.17.0-beta.1 November 05, 2025
Breaking changes ⚠️
- Require passing required argument to the constructor of experimental
GeofencingState.Builder,GeofencingError.Builder,GeofencingEvent.BuilderandGeofencingOptions.BuilderAPIs.
Features ✨ and improvements 🏁
- Added experimental
MapOptions.Builder.scaleFactor()for scaling icons and texts. - Add click gesture support to
Markercomposable withonClickparameter - Introduced
ScaleBarSettings.distanceUnitsproperty supporting metric, imperial, and nautical units, replacing the booleanisMetricUnitsproperty. - Added
fuelingStationModePointOfInterestLabelsconfiguration option to Mapbox Standard and Standard Satellite styles. Control the visibility of fuel station and electric charging station POI labels with options: "default" (shows both), "fuel" (fuel stations only), "electric" (charging stations only), or "none" (hides both). - Introduce experimental support for Appearances. The Appearances layer property defines sets of appearance objects used to quickly change the visual styling of a layer based on a condition using feature-state. See
AppearancesActivityin example application for further details. - Memory allocation improvements
Bug fixes 🐞
- Fix multiple crashes during style switches related to terrain rendering, texture management, and image cleanup.
- Fix line patterns not elevating properly on HD roads.
- Fix rendering of TileStore tiles when TileStore is used as disk cache and user is offline.
- Fix performance regression for
distanceandwithinexpressions when processing large GeoJSON datasets. - Fix GeoJSON tiled model disappearance during fast zoom interactions.
- Fix rendering issues when switching between globe and mercator projections.
- Logging improvements to reduce noise and duplication.
Dependencies
- Update gl-native to v11.17.0-beta.1, common to v24.17.0-beta.1.
11.16.2 October 31, 2025
Bug fixes 🐞
- Fix crash on 3D/satellite styles switching
Dependencies
11.16.1 October 28, 2025
Bug fixes 🐞
- Fix crash on frequent style switching
- Fix iteration over GeoJSON children for
distanceandwithinexpression to results in performance spike - Fix crash on day/night switch incorrect texture release order
Dependencies
11.16.0 October 21, 2025
Bug fixes 🐞
- Fix location request leak when setting custom location provider after updating settings
Dependencies
11.16.0-rc.2 October 14, 2025
Features ✨ and improvements 🏁
- Add zoom expression support for line-cutout-width property.
- TileStore improvements.
Bug fixes 🐞
- Fix
ConcurrentModificationExceptionifdetectorslist was modified inAndroidGesturesManagerwhile processing events. - Fix 3D models disappearing randomly during fast zoom interactions.
Dependencies
- Update gl-native to v11.16.0-rc.2, common to v24.16.0-rc.2.
- Update Mapbox Gestures for Android to 0.9.2.
11.16.0-rc.1 October 07, 2025
Bug fixes 🐞
- Fix
varexpressions that did not work properly with config expressions. - Fix cutout disappearing at certain zoom and pitch levels with orthographic camera.
- Fix potential crashes when updating style layer properties.
Dependencies
- Update gl-native to v11.16.0-rc.1, common to v24.16.0-rc.1.
11.16.0-beta.1 September 23, 2025
Features ✨ and improvements 🏁
- Update target and compile SDK version to 35
- Added support for
LandmarkIconsfeatureset in Mapbox Standard Style. Query and interact with landmark building icons that appear on the map, accessing properties including landmark ID, name, type, and localized names through theStandardLandmarkIconsFeatureclass. - Enhanced
MapboxStandardStyle()andMapboxStandardSatelliteStyle()Compose functions with comprehensive configuration options:- Color customization: Set custom colors for roads, motorways, water, greenspaces, administrative boundaries, and more
- Landmark icons: Control visibility of landmark building icons and labels (
showLandmarkIcons,showLandmarkIconLabels) - Point-of-interest styling: Configure POI label backgrounds, colors, and density
- Road appearance: Adjust road brightness, show/hide pedestrian roads and transit networks
- Administrative boundaries: Toggle boundary visibility and customize colors
- 3D objects: Control visibility of buildings, landmarks, and trees with
show3dObjects
- Expose
LineLayer.lineCutoutFadeWidthto control route line cutout fade width. com.mapbox.maps.MapboxTracingwas deprecated and moved to packagecom.mapbox.common.MapboxTracing.
Bug fixes 🐞
- Fix incorrect color rendering for gradients and interpolations with zero alpha channel.
- Fix incorrect positioning of map marker annotations, when coordinates do not change.
- Fix incorrect display height for zooming gesture on secondary displays.
- Fix some feature state-related bugs.
- Fix precision issue in hillshade causing terrain with steps.
- Fix incorrect Asset File Source initialization.
- Fix an issue where
MapView#snapshotlistener was invoked twice when the map was not ready.
Dependencies
- Update gl-native to v11.16.0-beta.1, common to 24.16.0-beta.1.
11.15.2 October 02, 2025
Features ✨ and improvements 🏁
- Reduce number of allocations for network requests.
Dependencies
11.15.1 September 26, 2025
11.15.0 September 11, 2025
Features ✨ and improvements 🏁
- Expose
LineLayer.lineCutoutOpacityandLineLayer.lineCutoutWidthto make route lines visible through obstructing 3D buildings and other aboveground features. - Expose experimental
MapboxMap.setStyleLayerPropertiesAsyncandMapboxMap.setStyleLayerPropertyAsync(also available throughStyle) to allow setting properties from a any thread and asynchronously. - Improve performance of the zooming-out animation
Bug fixes 🐞
- Fix flyTo animation when zoom property is null or not changed
- Fix
MapInteractionfor 2D and 3D location puck indicator - Fix ViewAnnotation disappears when interacting with location puck at different camera positions due to incorrect 2D puck bounding box calculation
- Fix a bug where Dynamic View Annotations disappeared in corner cases
- Fix bug where View Annotation is not displayed at zoom levels > 22
- Fix potential crash caused by a race condition
- Fix the alignment of the text and icon when using the text-anchor property.
- Fix incorrect background color of icons when non-default color-theme is used
- Fix tile border debug feature flickering on globe projection
- Fix potential ANR (Application Not Responding) issue when retrieving display refresh rate during map initialization by offloading the system call to a background thread with proper timeout and fallback handling.
- Fix frames skipped when calling
mapView.setMaximumFps(..)multiple times. - Allow to create text-field without any text
- Fix potential data race in mapbox token initialization
- Fix cronet request cancel due to connect timeout & reduce objects created.
Dependencies
- Update gl-native to v11.15.0, common to 24.15.0.
- Update Mapbox GeoJSON library to v7.5.0 which bumps GSON to v2.13.1 to address CVE-2025-53864. If your project uses AGP 7.0, you might need to add the following snippet to your
build.gradleor upgrade to AGP 8.0+ (more details):
configurations {
all {
exclude group: 'com.google.errorprone', module: 'error_prone_annotations'
}
}
11.14.7 September 29, 2025
Dependencies
11.14.6 September 18, 2025
Dependencies
11.14.4 September 03, 2025
Features ✨ and improvements 🏁
- Performance optimizations for View Annotations.
Dependencies
- Update gl-native to v11.14.4, common to 24.14.4.
11.14.3 August 29, 2025
Bug fixes 🐞
- Fix a bug where Dynamic View Annotations disappeared in corner cases
- Fix a bug where location indicator layer disappeared in certain configurations
- Fix potential crash caused by a race condition
Dependencies
- Update gl-native to v11.14.3, common to 24.14.3
11.15.0-rc.1 August 28, 2025
Bug fixes 🐞
- Fix bug where View Annotation is not displayed at zoom levels > 22
- Fix potential crash caused by a race condition
- Fix the alignment of the text and icon when using the text-anchor property.
Dependencies
- Update gl-native to v11.15.0-rc.1, common to 24.15.0-rc.1.
11.15.0-beta.3 August 18, 2025
Bug fixes 🐞
- Fix incorrect background color of icons when non-default color-theme is used
Dependencies
- Update gl-native to v11.15.0-beta.3, common to 24.15.0-beta.3.
11.15.0-beta.2 August 15, 2025
Bug fixes 🐞
- Fix tile border debug feature flickering on globe projection
Dependencies
- Update gl-native to v11.15.0-beta.2, common to 24.15.0-beta.2.
11.15.0-rc.1 August 28, 2025
Bug fixes 🐞
- Fix frames skipped when calling
mapView.setMaximumFps(..)multiple times.
11.15.0-beta.1 August 12, 2025
Features ✨ and improvements 🏁
- Improve performance during zoom out camera animations
Bug fixes 🐞
- Fix potential ANR (Application Not Responding) issue when retrieving display refresh rate during map initialization by offloading the system call to a background thread with proper timeout and fallback handling.
- Fix frames skipped when calling
mapView.setMaximumFps(..)multiple times. - Fixed
text-fieldto be created without any text but with an image only - Fix ViewAnnotation disappears when interacting with location puck at different camera positions due to incorrect 2D puck bounding box calculation
- Fix potential data race in mapbox token initialization
Dependencies
- Update gl-native to v11.15.0-beta.1, common to 24.15.0-beta.1.
- Update Mapbox GeoJSON library to v7.5.0 which bumps GSON to v2.13.1 to address CVE-2025-53864. If your project uses AGP 7.0, you might need to add the following snippet to your
build.gradleor upgrade to AGP 8.0+ (more details):
configurations {
all {
exclude group: 'com.google.errorprone', module: 'error_prone_annotations'
}
}
11.14.2 August 15, 2025
11.14.1 August 07, 2025
Bug fixes 🐞
- Fix missing map loaded event in case vector tile is not found
Dependencies
- Update gl-native to v11.14.1, common to 24.14.1.
11.14.0 July 30, 2025
Features ✨ and improvements 🏁
- Added new
FillLayer.fillPatternCrossFade,FillExtrusionLayer.fillExtrusionPatternCrossFade,LineLayer.fillExtrusionPatternCrossFadeproperties. - Provide depth range used for rendering 3D content to custom layers.
- Added new
splitexpression, which returns an array of substrings from a string, split by a delimiter parameter. - Added experimental
MapView.scheduleThreadServiceTypeReset()to reset the renderer thread service type to Interactive. This experimental API is intended for edge cases involving custom lifecycle management or specific scenarios where the default lifecycle behavior is insufficient. - Added
setContentDescription()method toAttributionPluginandAttributionViewinterfaces to programmatically set accessibility content description for the attribution button. - Added
MapView.onResume()which should be called inonResume()of the host activity or fragment to resume the map view ifplugin-lifecycleis not used.
Bug fixes 🐞
- [compose] Avoid excessive debug logging on SourceState, which can result in Out Of Memory in extreme cases. Avoid appending geojson data in
GeoJsonSourceState.toString()override. - Fix exception when accessing enum properties in annotations.
- Fix an issue where instant animation might not have been executed in case of launching multiple animations within a single frame.
- Apply obfuscation rules for generated
@MapboxModulewithenableConfiguration = true - Handle getSharedPreferences exceptions in SettingsServiceHelper
- Fixed placement for point symbols with symbol-z-offset
- Fixed some icons being skipped in rare cases
- Fixed text/icon intersections for optional texts/icons in some cases
- Fix Dynamic View Annotations caches rebuilding on line-trim-offset updates
- Fix symbol z-offset not working with fixed fill-extrusion-height
- Fix potential race conditions in the sprite loader
- Fix a crash when using
CustomRasterSourceTileRenderer - Fix crashes when logging invalid data
Dependencies
- Update gl-native to v11.14.0, common to 24.14.0.
11.14.0-rc.1 July 16, 2025
Features ✨ and improvements 🏁
- Added
setContentDescription()method toAttributionPluginandAttributionViewinterfaces to programmatically set accessibility content description for the attribution button. - Added
MapView.onResume()which should be called inonResume()of the host activity or fragment to resume the map view ifplugin-lifecycleis not used. - Improved zoom animation performance by preloading target tiles and reducing unnecessary intermediate tile processing, resulting in smoother camera transitions and reduced frame rate drops.
- Introduce experimental
Markerconvenience API in Jetpack Compose. UseMarkerto quickly add aViewAnnotationpin at the specified coordinates with custom text, color, and stroke.
Bug fixes 🐞
- Fix exception when accessing enum properties in annotations.
- Fix an issue where instant animation might not have been executed in case of launching multiple animations within a single frame.
- Fix potential data race in Mapbox token initialization
- Minor fixes in
TileStoreservice - Fixed an issue where View Annotations would disappear when rotating and tilting the
MapViewwithallowOverlapWithPuck=falsedue to incorrect intersection calculations with off-screen location pucks.
Dependencies
- Update gl-native to v11.14.0-rc.1 and common to 24.14.0-rc.1.
11.14.0-beta.1 July 02, 2025
Features ✨ and improvements 🏁
- Added new
FillLayer.fillPatternCrossFade,FillExtrusionLayer.fillExtrusionPatternCrossFade,LineLayer.fillExtrusionPatternCrossFadeproperties. - Provide depth range used for rendering 3D content to custom layers.
- Added new
splitexpression, which returns an array of substrings from a string, split by a delimiter parameter.
Bug fixes 🐞
- Apply obfuscation rules for generated
@MapboxModulewithenableConfiguration = true - Handle getSharedPreferences exceptions in SettingsServiceHelper
Dependencies
- Update gl-native to v11.14.0-beta.1, common to 24.14.0-beta.1.
- Update Mapbox Base Android library to v0.12.0.
- Update Mapbox Gestures Android library to v0.9.1.
11.13.1 June 18, 2025
Bug fixes 🐞
- Apply a more robust policy for retrying failed network requests.
Dependencies
- Update gl-native to v11.13.1, common to 24.13.1.
11.13.0
Features ✨ and improvements 🏁
- Expose
RenderThreadStatsRecorderas experimental API. - Expose new experimental properties:
CircleLayer.circleElevationReference,FillLayer.fillConstructBridgeGuardRail,FillLayer.fillBridgeGuardRailColor,FillLayer.fillTunnelStructureColor. - Promote
MapInteractionAPIs to stable, remove experimentalStyle.STANDARD_EXPERIMENTALconstant, asStyle.STANDARDsupports featuresets and map interactions by default.- Add common
MapInteractionAPIs toStandardStyleInteractionsState:.onFeaturesetClicked,.onLayerClicked,.onFeaturesetLongClicked,.onLayerLongClicked,.onMapClicked,.onMapLongClicked. - Add
StyleInteractionsStatetoMapboxStandardSatelliteStyleso interactions can be used with the satellite style.
- Add common
- [compose] Rename experimental
ExperimentalStandardStyleStatetoStandardStyleState, rename experimentalMapboxStandardStyleExperimentaltoMapboxStandardStyle(styleImportsContent, topSlot, middleSlot, bottomSlot, standardStyleState), and deprecate previousMapboxStandardStylecomposable functions. - Expose new experimental camera event
MapboxMap.subscribeCameraChangedCoalesced,MapboxMap.cameraChangedCoalescedEvents. - [compose] Expose new camera event
MapState.cameraChangedCoalescedEvents - Introduce custom layer matrices API
CustomLayerMapProjectioninCustomLayerRenderParametersfor globe projection. - Introduce
minZoomandmaxZoomproperties forCircleAnnotationManager,PointAnnotationManager,PolygonAnnotationManager,PolylineAnnotationManager. - Introduce experimental
worldviewexpression. - [compose] Introduce
minZoomandmaxZoomproperties forCircleAnnotationGroupState,PointAnnotationGroupState,PolygonAnnotationGroupState,PolylineAnnotationGroupState. - [compose] Add config option
showLandmarkIconstoMapboxStandardStyle. - Improve the performance of
MapboxMap.cameraForCoordinates(...)for large amounts of points.
Bug fixes 🐞
- Fix elevated lines rendering regression.
- Do not write errors to logs if event was not send because events are disabled.
- Fixed incorrect placement for symbols with symbol-z-elevate on Globe projection.
- Elevated symbol heights now change as smooth as building heighs.
- Fixing unstable placement for elevated symbols.
- Respect config expressions in filter.
- Fix symbol order with symbol-z-elevate true and symbol-z-order viewport-y.
- Fix issue that promoteId content is missing after vector source serialization.
- Fixed disappearing volatile tiles on camera changes in offline mode when
maximumStaleIntervalis set. - Resolved frequent DVA repositioning issues.
- Fixed fill patterns for elevated roads.
- Tiles are now properly reloaded when the language setting is removed.
- Limited the collision grid size for view annotations to improve performance.
- Fix location indicator bearing animation update being missing in some occasions.
- Fix a bug where
cameraForCoordianteswith screen box oscillates when initial zoom is close to set max zoom. - Skip unneeded tiles relayout when landmark icons get enabled.
- Fix a crash in disk cache code when fetching a high-zoom (z > 16) tile.
Dependencies
- Update gl-native to v11.13.0, common to 24.13.0.
11.12.4 June 12, 2025
Bug fixes 🐞
- Fix location indicator bearing animation update being missing in some occasions.
Dependencies
- Update gl-native to v11.12.4 and common to v24.12.4.
11.12.3 June 05, 2025
Features ✨ and improvements 🏁
- Improve the performance of
MapboxMap.cameraForCoordinates(...)for large amounts of points.
Bug fixes 🐞
- Fix a crash in disk cache code when fetching a high-zoom (z > 16) tile.
- Fix a bug where cameraForCoordiantes with screen box oscillates when initial zoom is close to set max zoom.
Dependencies
- Update gl-native to v11.12.3 and common to v24.12.3.
11.13.0-rc.1 June 03, 2025
Features ✨ and improvements 🏁
- Introduce custom layer matrices API
CustomLayerMapProjectioninCustomLayerRenderParametersfor globe projection. - Introduce
minZoomandmaxZoomproperties forCircleAnnotationManager,PointAnnotationManager,PolygonAnnotationManager,PolylineAnnotationManager. - [compose] Introduce
minZoomandmaxZoomproperties forCircleAnnotationGroupState,PointAnnotationGroupState,PolygonAnnotationGroupState,PolylineAnnotationGroupState. - [compose] Add config option
showLandmarkIconstoMapboxStandardStyle.
Bug fixes 🐞
- Fixed disappearing volatile tiles on camera changes in offline mode when
maximumStaleIntervalis set. - Resolved frequent DVA repositioning issues.
- Fixed fill patterns for elevated roads.
- Tiles are now properly reloaded when the language setting is removed.
- Limited the collision grid size for view annotations to improve performance.
Dependencies
- Update gl-native to v11.13.0-rc.1, common to 24.13.0-rc.1.
11.13.0-beta.1 May 19, 2025
Breaking changes ⚠️
PointAnnotation.iconImageCrossFadehas been deprecated and setting value to it will not have any impact. UsePointAnnotationManager.iconImageCrossFadeTransitioninstead.
Features ✨ and improvements 🏁
- Expose
RenderThreadStatsRecorderas experimental API. - Expose new experimental properties:
CircleLayer.circleElevationReference,FillLayer.fillConstructBridgeGuardRail,FillLayer.fillBridgeGuardRailColor,FillLayer.fillTunnelStructureColor. - Promote
MapInteractionAPIs to stable, remove experimentalStyle.STANDARD_EXPERIMENTALconstant, asStyle.STANDARDsupports featuresets and map interactions by default.- Add common
MapInteractionAPIs toStandardStyleInteractionsState:.onFeaturesetClicked,.onLayerClicked,.onFeaturesetLongClicked,.onLayerLongClicked,.onMapClicked,.onMapLongClicked. - Add
StyleInteractionsStatetoMapboxStandardSatelliteStyleso interactions can be used with the satellite style.
- Add common
- [compose] Rename experimental
ExperimentalStandardStyleStatetoStandardStyleState, rename experimentalMapboxStandardStyleExperimentaltoMapboxStandardStyle(styleImportsContent, topSlot, middleSlot, bottomSlot, standardStyleState), and deprecate previousMapboxStandardStylecomposable functions. - Expose new experimental camera event
MapboxMap.subscribeCameraChangedCoalesced,MapboxMap.cameraChangedCoalescedEvents. - [compose] Expose new camera event
MapState.cameraChangedCoalescedEvents
Bug fixes 🐞
- Fix elevated lines rendering regression.
- Do not write errors to logs if event was not send because events are disabled.
- Fixed incorrect placement for symbols with symbol-z-elevate on Globe projection.
- Elevated symbol heights now change as smooth as building heighs.
- Fixing unstable placement for elevated symbols.
- Respect config expressions in filter.
- Fix symbol order with symbol-z-elevate true and symbol-z-order viewport-y.
- Fix issue that promoteId content is missing after vector source serialization.
Dependencies
- Update gl-native to v11.13.0-beta.1, common to 24.13.0-beta.1.
11.11.1 May 16, 2025
Bug fixes 🐞
- Fixed a crash that occurred when a runtime-added unused image was removed and later reused.
Dependencies
- Update gl-native to v11.11.4.
11.12.0 May 7, 2025
Features ✨ and improvements 🏁
- Mapbox Geofencing is now available in public preview. Follow the documentation and code examples for Android and iOS to get started.
- Avoid fetching pixelRatio from gl-native while rendering scalebar to improve CPU usage.
- Promote
MapView.attribution.getMapAttributionDelegate().extraAttributionsto stable. - Expose an experimental API to define a non-rectangular screen culling shape(
MapboxMap.get/setScreenCullingShape) - Introduce experimental
colorUseThemeAPI forAmbientLight,DirectionalLight, andFlatLightto override color theme of light. - [compose] Introduce experimental
colorUseThemeAPI forAmbientLightState,DirectionalLightState, andFlatLightStateto override color theme of light. - [compose] Introduce experimental
vignetteColorUseThemeandcolorUseThemeforRainStateandSnowStatewhich allows overriding color theme of precipitations. - [compose] Annotate
rememberGeoJsonSourceStateas delicate API due to performance implications when used with large GeoJsonData. - Avoid dynamic view annotation overlapping given symbol layers.
- Vector icons can now also be retrieved via
getStyleImageAPI. - Revert changes to
atexpression and add newat-interpolatedexpression. - Enable tile pack v2 format by default.
Bug fixes 🐞
- Fixed a crash that occurred when a runtime-added unused image was removed and later reused.
*-sort-keyproperties now uses double, fixing incorrect sorting with big key values- Fix registering camera change listener every time
mapView.scalebar.enabledis called with valuetrueand it was already enabled. - Fix map flickering caused by the fill-extrusion pan tiles and missing stencil in 3D layers.
- Fix semi transparent landmark icons.
- Return null for config expression if requested config option is missing.
- Fix clipPath and mask rendering for vector icon rasterization.
- Fix dotted lines on tile borders.
- Fix pattern not found when using imports.
- Fix line layer not rendering if using
line-patterninside an imported style. - Fix ground effect gradient not working with multiple polygons.
- Add simple bounds check to avoid crash during centroid computation.
- Fix invisible line when interpolating line-width from 0 to 1 using line-progress.
- Tile loading speedup.
- Fix URL migration to DB v10.
Dependencies
- Update gl-native to v11.12.0 and common to v24.12.0.
11.12.0-rc.1
Features ✨ and improvements 🏁
- Avoid fetching pixelRatio from gl-native while rendering scalebar to improve CPU usage.
- Promote
MapView.attribution.getMapAttributionDelegate().extraAttributionsto stable.
11.12.0-beta.1 April 09, 2025
Features ✨ and improvements 🏁
- Introduce experimental
colorUseThemeAPI forAmbientLight,DirectionalLight, andFlatLightto override color theme of light. - [compose] Introduce experimental
colorUseThemeAPI forAmbientLightState,DirectionalLightState, andFlatLightStateto override color theme of light. - [compose] Introduce experimental
vignetteColorUseThemeandcolorUseThemeforRainStateandSnowStatewhich allows overriding color theme of precipitations. - [compose] Annotate
rememberGeoJsonSourceStateas delicate API due to performance implications when used with large GeoJsonData. - Avoid dynamic view annotation overlapping given symbol layers.
- Vector icons can now also be retrieved via
getStyleImageAPI. - Revert changes to
atexpression and add newat-interpolatedexpression. - Enable tile pack v2 format by default.
Bug fixes 🐞
- Fix semi transparent landmark icons.
- Return null for config expression if requested config option is missing.
- Fix clipPath and mask rendering for vector icon rasterization.
- Fix dotted lines on tile borders.
- Fix pattern not found when using imports.
- Fix line layer not rendering if using
line-patterninside an imported style. - Fix ground effect gradient not working with multiple polygons.
- Add simple bounds check to avoid crash during centroid computation.
- Fix invisible line when interpolating line-width from 0 to 1 using line-progress.
- Tile loading speedup.
- Fix URL migration to DB v10.
Dependencies
- Update gl-native to v11.12.0-beta.1 and common to v24.12.0-beta.1.
11.11.0 March 26, 2025
Features ✨ and improvements 🏁
- Support for landmark icons. Landmark icons are stylized, uniquely designed POI icons that indicate the most popular and recognizable landmarks on the map.
- Support expression input for
PromoteId. - Add a setting that allows geofencing users with Android <= 28 to access background locations. Add
mapbox-location-config.xmlfile with the following content:
<resources>
<bool name="com.mapbox.common.location.sdk28_use_background_permissions">true</bool>
</resources>
- Add
Expressionsupport for*UseThemestyle properties to override color theme for particular color properties in all layers. - Add experimental
*UseThemesupport for annotations andLocationPuck3D. - Introduce experimental
Style.setImportColorTheme, which allows changing the color theme of the style import. - [compose] Introduce experimental
StyleImportState.styleColorThemewhich allows changing the color theme of the style import. - Conflate
MapboxMap.mapLoadedEvents,MapboxMap.mapLoadingErrorEvents,MapboxMap.styleLoadedEvents,MapboxMap.styleDataLoadedEvents,MapboxMap.cameraChangedEvents,MapboxMap.mapIdleEvents,MapboxMap.sourceAddedEvents,MapboxMap.sourceRemovedEvents,MapboxMap.sourceDataLoadedEvents,MapboxMap.styleImageMissingEvents,MapboxMap.styleImageRemoveUnusedEvents,MapboxMap.renderFrameStartedEvents,MapboxMap.renderFrameFinishedEvents,MapboxMap.resourceRequestEventsby default to avoid blocking main thread due to slow collectors.
Bug fixes 🐞
- Fix annotation drag being triggered when multi-finger gesture is in progress.
- Fix missing vector images after style change.
- Ensure background color is correctly set.
- Fix background layer not being updated if raster image was updated in-place or if color theme changed.
- Trigger DVA replacement if zoom diff is big.
- Fix line placement symbol disappearing issue when in zoom level 5.
- Place view annotation away from camera when pitch > 45.
- Fix dark shades of gradient effect in night preset.
- Fix Custom Raster Source behavior on re-creation.
- Change unreachable connection retries to use exponential backoff.
- Fixed incorrect rgba to hsla conversion for white color.
- Fix vector images rasterization.
- Make katakana and CJK symbol rendered correctly in vertical writing mode.
- Fix a bug that may cause style packs to be either inaccessible or incorrect when updating an older tile store database created with Maps SDK 11.9 or earlier versions. In systems that have already used Maps SDK 11.10.0 through 11.10.2, a re-download of style packs may be necessary.
- Fix a map start time regression by speed up tile loading.
Dependencies
- Update gl-native to v11.11.0 and common to v24.11.0.
11.10.3 March 19, 2025
Bug fixes 🐞
- Fix a bug that may cause style packs to be either inaccessible or incorrect when updating an older tile store database created with Maps SDK 11.9 or earlier versions. In systems that have already used Maps SDK 11.10.0 through 11.10.2, a re-download of style packs may be necessary.
- Fix a map start time regression by speed up tile loading.
Dependencies
- Update gl-native to v11.10.3, common to v24.10.1.
11.11.0-rc.1 March 12, 2025
Features ✨ and improvements 🏁
- Add
Expressionsupport for*UseThemestyle properties to override color theme for particular color properties in all layers. - Add experimental
*UseThemesupport for annotations andLocationPuck3D. - Introduce experimental
Style.setImportColorTheme, which allows changing the color theme of the style import. - [compose] Introduce experimental
StyleImportState.styleColorThemewhich allows changing the color theme of the style import. - Conflate
MapboxMap.mapLoadedEvents,MapboxMap.mapLoadingErrorEvents,MapboxMap.styleLoadedEvents,MapboxMap.styleDataLoadedEvents,MapboxMap.cameraChangedEvents,MapboxMap.mapIdleEvents,MapboxMap.sourceAddedEvents,MapboxMap.sourceRemovedEvents,MapboxMap.sourceDataLoadedEvents,MapboxMap.styleImageMissingEvents,MapboxMap.styleImageRemoveUnusedEvents,MapboxMap.renderFrameStartedEvents,MapboxMap.renderFrameFinishedEvents,MapboxMap.resourceRequestEventsby default to avoid blocking main thread due to slow collectors.
Bug fixes 🐞
- Fixed incorrect rgba to hsla conversion for white color.
- Fix vector images rasterization.
- Make katakana and CJK symbol rendered correctly in vertical writing mode.
Dependencies
- Update gl-native to v11.11.0-rc.1 and common to v24.11.0-rc.1.
11.11.0-beta.1 March 03, 2025
Features ✨ and improvements 🏁
- Support expression input for
PromoteId. - Add a setting that allows geofencing users with Android <= 28 to access background locations. Add
mapbox-location-config.xmlfile with the following content:
<resources>
<bool name="com.mapbox.common.location.sdk28_use_background_permissions">true</bool>
</resources>
Bug fixes 🐞
- Fix missing vector images after style change.
- Ensure background color is correctly set.
- Fix background layer not being updated if raster image was updated in-place or if color theme changed.
- Trigger DVA replacement if zoom diff is big.
- Fix line placement symbol disappearing issue when in zoom level 5.
- Place view annotation away from camera when pitch > 45.
- Fix dark shades of gradient effect in night preset.
- Fix Custom Raster Source behavior on re-creation.
- Change unreachable connection retries to use exponential backoff.
Dependencies
- Update gl-native to v11.11.0-beta.1 and common to v24.11.0-beta.1.
11.10.2 February 25, 2025
Bug fixes 🐞
- Fixing missing vector images after style change
Dependencies
- Update gl-native to v11.10.2.
11.10.1 February 24, 2025
Features ✨ and improvements 🏁
- Small performance improvements in the map initialization call chain by avoiding IPC calls on main.
Bug fixes 🐞
- Fix LUT not being applied to in-place updated images.
- Fix in-place updates for SDF images.
- Fix background layer not being updated if raster image was updated in-place or if color theme changed.
- Vector icons supported in location indicator layer.
- Fix mipmaps for images updated inplace.
- Ensure background color is correctly set.
Dependencies
- Update gl-native to v11.10.1.
11.10.0 February 13, 2025
Features ✨ and improvements 🏁
- Localize geofencing attribution dialog.
- Introduce
ViewAnnotationOptions.priority, deprecateViewAnnotationOptions.selected. Use this property to define view annotation sort order. - Introduce
ViewAnnotationOptions.minZoomandViewAnnotationOptions.maxZoom. Use these properties to configure zoom-level specific view annotations. - Introduce
SymbolLayer.iconSizeScaleRange,SymbolLayer.textSizeScaleRange,FillLayer.fillElevationReference,LineLayer.lineCrossSlope,LineLayer.lineWidthUnit,LineLayer.lineCrossSlope,LineLayer.lineElevationReference,DirectionalLight.shadowQuality,Rain.distortionStrength,Rain.distortionStrengthTransition,Rain.dropletSize,Rain.dropletSizeTransition,Rain.vignetteColor,Rain.vignetteColorTransition,Snow.flakeSize,Snow.flakeSizeTransition,Snow.vignetteColor,Snow.vignetteColorTransition. - Introduce experimental Color Theme API, which allows changing the style of the map using
Style.setStyleColorTheme. - Introduce experimental
ModelLayer.modelElevationReferenceproperty. - Introduce experimental
LocationPuck3D.modelElevationReferenceproperty. - Add experimental
ViewAnnotationManager.setViewAnnotationAvoidLayersfor specifying layers that view annotations should avoid. The API currently only supports line layers. - Add
*UseThemeString style properties to override color theme for particular color properties in all layers and their Compose counterparts. - Add support for the
maxOverscaleFactorForParentTilesproperty inCustomRasterSourceandCustomGeometrySource, allowing greater control over tile overscaling behavior when rendering custom raster tiles. - Extend tilecover for elevated roads avoiding missing road segments.
- Change default value of experimental
Rain.opacityto 0.19, defaultRain.vignetteto 0.3,Snow.opacityto 0.19, defaultSnow.vignetteto 0.3. - Update the default value of experimental properties: default
Snow.densityis updated to["interpolate",["linear"],["zoom"],11,0,13,0.85]; defaultSnow.opacityis updated to1.0; defaultSnow.vignetteis updated to["interpolate",["linear"],["zoom"],11,0,13,0.3]; defaultSnow.centerThinningis updated to0.4, defaultSnow.directionis updated tolistOf(0.0, 50.0); defaultSnow.flakeSizeis updated to0.71; defaultRain.densityis updated to["interpolate",["linear"],["zoom"],11,0,13,0.85]; defaultRain.coloris updated to["interpolate",["linear"],["measure-light","brightness"],0,"#03113d",0.3,"#a8adbc"]; defaultRain.opacityis updated to["interpolate",["linear"],["measure-light","brightness"],0,0.88,1,0.7]; defaultRain.vignetteis updated to["interpolate",["linear"],["zoom"],11,0,13,0.3]; defaultRain.vignetteColoris updated to["interpolate",["linear"],["measure-light","brightness"],0,"#001736",0.3,"#464646"]; defaultRain.centerThinningis updated to0.57; defaultRain.dropletSizeis updated tolistOf(2.6, 18.2); defaultRain.distortionStrengthis updated to0.7. - Remove
@MapboxExperimentalfromClipLayer.clipLayerTypesandClipLayer.clipLayerScope. - Remove
<profileable android:shell=true/>flag in release manifest. - Remove
libandroid-tests-support-code.sofrom release AAR. - Remove experimental
ShadowQualityproperties from direct light layer. - [compose] Introduce experimental
StyleState.colorThemestate for settingColorThemefor the style. - [compose] Introduce experimental
SymbolLayerState.iconSizeScaleRange,SymbolLayerState.textSizeScaleRange,FillLayerState.fillElevationReference,LineLayerState.lineCrossSlope,LineLayerState.lineWidthUnit,LineLayerState.lineCrossSlope,LineLayerState.lineElevationReference,DirectionalLightState.shadowQuality,RainState.distortionStrength,RainState.distortionStrengthTransition,RainState.dropletSize,RainState.dropletSizeTransition,RainState.vignetteColor,RainState.vignetteColorTransition,SnowState.flakeSize,SnowState.flakeSizeTransition,SnowState.vignetteColor,SnowState.vignetteColorTransition.
Bug fixes 🐞
- [compose] Fix wrong layer order when using
aboveLayer(..)composable function. - [compose] Fix annotation composable functions not working inside
slot(...)composable function. - [compose] Fix annotation composable functions rendered in wrong order.
- Prefer last used anchor for Dynamic View Annotation placement.
- Fix out of bound issue of gradient effect.
- Fix hidden elements caused by flood lighting.
- Fix parsing raster sprite images with float stretch/content coordinates.
- Fix glyph loading issue when incorrect glyph url is used.
- Speed up start with big old offline database.
- Fix disappearing tiles in some rare conditions.
- Fix rasterization of images with positive mask coordinates which caused vector icons not being rasterized correctly.
- Place Dynamic View Annotation further away from camera when pitch > 45. This allows Dynamic View Annotation to be placed further away from the puck so it is not repositioned frequently.
- Fix visual artifacts from
FillExtrusionLayerfor night presets. - Fix precision issues with 3D puck and orthographic projection when zoom is more than 17. The fix prevents puck-shadow from disappearing in lower zoom scales in 2D-views.
- Fix road shadows issues when far away and low zoom levels.
- Fix app crash when autoMaxZoom=true.
- Fix an unhandled exception occurring during config expression parsing
- Mark
BackgroundLayer.backgroundPitchAlignmentas experimental. - Skip any map scroll (panning) if shove gesture is already in progress preventing camera flying away.
- Fix crash on style reload if a config referenced in the expression was missing.
- Fix high cpu usage when map goes to background.
- Fix missing on style loaded call if sprite is absent in cache and there is no network connection.
- Fix background layers which used images from a mapbox-hosted style.
- Fix images being displayed incorrectly in some cases with line patterns and
LineJoin.NONE. - Fix too early sources loaded event.
- Fix to calculate image size for max text size, not for the next zoom level text size.
- Fix line rendering for layers with elevated and non-elevated buckets
Dependencies
- Update gl-native to v11.10.0 and common to v24.10.0.
11.9.2 February 05, 2025
Bug fixes 🐞
- Fix exception while parsing the config expression.
- Fix app crash when autoMaxZoom=true.
- Fixing parsing raster sprite images with float stretch/content coordinates.
- Fix color theme data decoding.
- Fix glyph loading issue when incorrect glyph url is used.
Dependencies
- Update gl-native to v11.9.3.
11.10.0-rc.1 January 31, 2025
Features ✨ and improvements 🏁
- Add experimental
ViewAnnotationManager.setViewAnnotationAvoidLayersfor specifying layers that view annotations should avoid. The API currently only supports line layers. - Add support for the
maxOverscaleFactorForParentTilesproperty inCustomRasterSourceandCustomGeometrySource, allowing greater control over tile overscaling behavior when rendering custom raster tiles. - Add
*UseThemeString style properties to override color theme for particular color properties in all layers and their Compose counterparts. - Remove experimental
ShadowQualityproperties from direct light layer. - Extend tilecover for elevated roads avoiding missing road segments.
- Introduce experimental Color Theme API, which allows changing the style of the map using
Style.setStyleColorTheme. - [compose] Introduce experimental
StyleState.colorThemestate for settingColorThemefor the style.
Bug fixes 🐞
- Prefer last used anchor for Dynamic View Annotation placement.
- Fix out of bound issue of gradient effect.
- Fix hidden elements caused by flood lighting.
- Fix parsing raster sprite images with float stretch/content coordinates.
- Fix glyph loading issue when incorrect glyph url is used.
- Fix color theme data decoding.
- Speed up start with big old offline database.
- Fix disappearing tiles in some rare conditions.
- Fix road shadows issues when far away and low zoom levels.
Dependencies
- Update gl-native to v11.10.0-rc.1 and common to v24.10.0-rc.1.
11.10.0-beta.1 January 20, 2025
Features ✨ and improvements 🏁
- Localize geofencing attribution dialog.
- Introduce
ViewAnnotationOptions.priority, deprecateViewAnnotationOptions.selected. Use this property to define view annotation sort order. - Introduce
ViewAnnotationOptions.minZoomandViewAnnotationOptions.maxZoom. Use these properties to configure zoom-level specific view annotations. - Introduce
SymbolLayer.iconSizeScaleRange,SymbolLayer.textSizeScaleRange,FillLayer.fillElevationReference,LineLayer.lineCrossSlope,LineLayer.lineWidthUnit,LineLayer.lineCrossSlope,LineLayer.lineElevationReference,DirectionalLight.shadowQuality,Rain.distortionStrength,Rain.distortionStrengthTransition,Rain.dropletSize,Rain.dropletSizeTransition,Rain.vignetteColor,Rain.vignetteColorTransition,Snow.flakeSize,Snow.flakeSizeTransition,Snow.vignetteColor,Snow.vignetteColorTransition. - Change default value of experimental
Rain.opacityto 0.19, defaultRain.vignetteto 0.3,Snow.opacityto 0.19, defaultSnow.vignetteto 0.3. - [compose] Introduce experimental
SymbolLayerState.iconSizeScaleRange,SymbolLayerState.textSizeScaleRange,FillLayerState.fillElevationReference,LineLayerState.lineCrossSlope,LineLayerState.lineWidthUnit,LineLayerState.lineCrossSlope,LineLayerState.lineElevationReference,DirectionalLightState.shadowQuality,RainState.distortionStrength,RainState.distortionStrengthTransition,RainState.dropletSize,RainState.dropletSizeTransition,RainState.vignetteColor,RainState.vignetteColorTransition,SnowState.flakeSize,SnowState.flakeSizeTransition,SnowState.vignetteColor,SnowState.vignetteColorTransition. - Remove
@MapboxExperimentalfromClipLayer.clipLayerTypesandClipLayer.clipLayerScope. - Update the default value of experimental properties: default
Snow.densityis updated to["interpolate",["linear"],["zoom"],11,0,13,0.85]; defaultSnow.opacityis updated to1.0; defaultSnow.vignetteis updated to["interpolate",["linear"],["zoom"],11,0,13,0.3]; defaultSnow.centerThinningis updated to0.4, defaultSnow.directionis updated tolistOf(0.0, 50.0); defaultSnow.flakeSizeis updated to0.71; defaultRain.densityis updated to["interpolate",["linear"],["zoom"],11,0,13,0.85]; defaultRain.coloris updated to["interpolate",["linear"],["measure-light","brightness"],0,"#03113d",0.3,"#a8adbc"]; defaultRain.opacityis updated to["interpolate",["linear"],["measure-light","brightness"],0,0.88,1,0.7]; defaultRain.vignetteis updated to["interpolate",["linear"],["zoom"],11,0,13,0.3]; defaultRain.vignetteColoris updated to["interpolate",["linear"],["measure-light","brightness"],0,"#001736",0.3,"#464646"]; defaultRain.centerThinningis updated to0.57; defaultRain.dropletSizeis updated tolistOf(2.6, 18.2); defaultRain.distortionStrengthis updated to0.7. - Introduce experimental
ModelLayer.modelElevationReferenceproperty. - Introduce experimental
LocationPuck3D.modelElevationReferenceproperty. - Remove
<profileable android:shell=true/>flag in release manifest. - Remove
libandroid-tests-support-code.sofrom release AAR.
Bug fixes 🐞
- Mark
BackgroundLayer.backgroundPitchAlignmentas experimental. - Skip any map scroll (panning) if shove gesture is already in progress preventing camera flying away.
- Fix crash on style reload if a config referenced in the expression was missing.
- Fix high cpu usage when map goes to background.
- Fix missing on style loaded call if sprite is absent in cache and there is no network connection.
- Fix background layers which used images from a mapbox-hosted style.
- Fix images being displayed incorrectly in some cases with line patterns and
LineJoin.NONE. - Fix too early sources loaded event.
Known issues ⚠️
- Disappearing tiles in some rare conditions. Fix will be available in the next release.
Dependencies
- Update gl-native to v11.10.0-beta.2 and common to v24.10.0-beta.2.
11.9.1 January 20, 2025
Bug fixes 🐞
- Add missing experimental annotation to
backgroundPitchAlignmentproperty. - Fix crash on style reload if a config referenced in the expression was missing.
- Fix high cpu usage when map goes to background.
- Fix missing on style loaded call if sprite is absent in cache and there is no network connection.
- Fix background layers which used images from a mapbox-hosted style.
- Fix disappearing tiles in some rare conditions.
Dependencies
- Update gl-native to v11.9.2.
11.9.0 December 18, 2024
Known issues 🛑
We do not recommend using this version. Please use 11.9.1 or newer.
- When a map is currently visible and user press home button the MapboxRenderThread consumes CPU (potentially keeping one CPU busy).
Breaking changes ⚠️
- Expose experimental Geofencing with
com.mapbox.annotation.MapboxExperimental. - Move experimental geofencing classes to
com.mapbox.common.geofencingpackage fromcom.mapbox.common.experimental.geofencing. - Make constructor of experimental
GeofencingOptions,GeofencingEventand other geofencing classes holding data private. AssociatedBuilder()classes should be used instead. - Remove experimental
MapboxMap.queryRenderedFeaturesandMapboxMap.querySourceFeaturesthat usedFeaturesetQueryTargetas an argument.
Features ✨ and improvements 🏁
- Introduce experimental
FillExtrusionLayer.fillExtrusionBaseAlignmentandFillExtrusionLayer.fillExtrusionHeightAlignmentAPIs to control the behavior of fill extrusion base over terrain and the behavior of fill extrusion height over terrain respectively. - Introduce experimental
FillLayer.fillZOffsetandFillLayer.fillZOffsetTransitionAPIs to specify a uniform elevation in meters and define the transition offillZOffsetrespectively. - Adds support for
fillZOffsetinPolygonAnnotation,PolygonAnnotationManager,PolygonAnnotationOptions. - Introduce
BackgroundLayer.backgroundPitchAlignmentAPI to configure the orientation of background layer. - Introduce
LocationIndicatorLayer.emphasisCircleGlowRangeandLocationIndicatorLayer.emphasisCircleGlowRangeTransitionAPIs to control the glow effect of the emphasis circle from the solid start to the fully transparent end and to set the transition options for theemphasisCircleGlowRangeproperty, respectively. - Introduce
radiusparameter forClickInteractionandLongClickInteractionto support an extra area around the interaction. - Add a way to specify options for
Expression.image(). - Introduce experimental
AnimatableModel,ModelMaterialPart,ModelNodePartAPIs to style the 3D location puck's overridable parts. Implementation example. - Introduce
modelRotationExpression,modelColor,modelColorExpression,modelColorMixIntensity,modelColorMixIntensityExpression,modelOpacityExpressiononLocationPuck3D. - Introduce experimental
LocationPuck3D.materialOverridesandLocationPuck3D.nodeOverridesAPI to allow model parts overrides. - Add vector icons support: SDK will now download vector icons and rasterize them locally, which will results in better icon quality for icons resized via icon-size. Changeable colors support: icon expression can now have optional parameter to change named colors described in SVG icons metadata.
- Add support for shadows from elevated structures.
- Add
toHslaexpression. - Introduce experimental
SnowandRainAPIs to show the snow or rain effect on the map. - Expose experimental
getFeaturesetsforMapboxMapandStyle. - Remove
MapboxExperimentalfromClipLayer. - [compose] Introduce
LocationIndicatorLayerState.emphasisCircleGlowRangeandLocationIndicatorLayerState.emphasisCircleGlowRangeTransitionproperties. - [compose] Introduce
FillLayerState.fillZOffsetandFillLayerState.fillZOffsetTransitionproperties. - [compose] Introduce
FillExtrusionLayerState.fillExtrusionBaseAlignmentandFillExtrusionLayerState.fillExtrusionHeightAlignmentproperties. - [compose] Introduce
BackgroundLayerState.backgroundPitchAlignmentproperty. - [compose] Adds support for
fillZOffsetinPolygonAnnotationState,PolygonAnnotationGroupState. - [compose] Expose
MapViewportState.cameraForCoordinatesmethod. - [compose] Introduce
radiusparameter for all relevant compose functions for interactions to support an extra area around the interaction. - [compose] Introduce experimental
SnowStateandRainStateAPIs to show the snow or rain effect on the map.
Bug fixes 🐞
- Fix dark shades caused by corner case light directions when
FillLayer.fillExtrusionEmissiveStrengthis set to high values (closer to 1). - Fix rendering of interleaved SDF and non-SDF icons in the same layer.
- Fix
LineLayer.lineEmissiveStrengthnot being applied to patterned lines. - Fix map flickering on some Mali and PowerVR GPUs.
- Fix shader fog computation being incorrectly enabled for landmarks.
- Handle empty payloads for offline resources.
- Encapsulate config expression in assertion expression when expected return type is known.
- Fixes a bug which caused icon shifts in some cases.
- Fix feature state update if layer contains data driven
measureLightexpression. - Fix the owning thread log error prints on legacy
OfflineRegioncreation. - Fix a crash in interpolate expression.
- Resolve usage of
GeoJsonSource.autoMaxZoomfor single feature. - Resolve dotted line issue with very long lines.
- Fix texture gather for shadows not being selected correctly by default.
- Performance improvements for runtime-added images.
- Fix
AndroidDeviceLocationProviderreporting an error when location permissions are not granted. - Improve exception handling inside Cronet providers when Cronet library failed to load.
- Improve character spacing for text offsets.
- Fixed crash on Android API level < 26.
- Do not load vector icons for client-provided sprites.
- Fall back to the feature's original ID when promoteId is an object and the source layer is not specified as a key in the object.
- Fixed crash caused by a repeated command buffer commit call.
- Fixed invalid processing of icon-size 0, using biggest of two image sizes with interpolated icon-size during vector icons rasterization.
Dependencies
- Update gl-native to v11.9.0 and common to v24.9.0.
11.9.0-rc.1 December 10, 2024
Features ✨ and improvements 🏁
- Add
toHslaexpression. - Introduce experimental
SnowandRainAPIs to show the snow or rain effect on the map. - [compose] Introduce experimental
SnowStateandRainStateAPIs to show the snow or rain effect on the map.
Bug fixes 🐞
- Improve character spacing for text offsets.
- Fixed crash on Android API level < 26.
- Do not load vector icons for client-provided sprites.
- Fall back to the feature's original ID when promoteId is an object and the source layer is not specified as a key in the object.
- Fixed crash caused by a repeated command buffer commit call.
Dependencies
- Update gl-native to v11.9.0-rc.1 and common to v24.9.0-rc.1.
11.8.1 December 03, 2024
Bug fixes 🐞
- Fix map flickering on some Mali and PowerVR GPUs.
Dependencies
- Update gl-native to v11.8.1.
11.9.0-beta.1 November 28, 2024
Breaking changes ⚠️
- Expose experimental Geofencing with
com.mapbox.annotation.MapboxExperimental. - Move experimental geofencing classes to
com.mapbox.common.geofencingpackage fromcom.mapbox.common.experimental.geofencing. - Make constructor of experimental
GeofencingOptions,GeofencingEventand other geofencing classes holding data private. AssociatedBuilder()classes should be used instead. - Remove experimental
MapboxMap.queryRenderedFeaturesandMapboxMap.querySourceFeaturesthat usedFeaturesetQueryTargetas an argument.
Features ✨ and improvements 🏁
- Introduce experimental
FillExtrusionLayer.fillExtrusionBaseAlignmentandFillExtrusionLayer.fillExtrusionHeightAlignmentAPIs to control the behavior of fill extrusion base over terrain and the behavior of fill extrusion height over terrain respectively. - Introduce experimental
FillLayer.fillZOffsetandFillLayer.fillZOffsetTransitionAPIs to specify a uniform elevation in meters and define the transition offillZOffsetrespectively. - Adds support for
fillZOffsetinPolygonAnnotation,PolygonAnnotationManager,PolygonAnnotationOptions. - Introduce
BackgroundLayer.backgroundPitchAlignmentAPI to configure the orientation of background layer. - Introduce
LocationIndicatorLayer.emphasisCircleGlowRangeandLocationIndicatorLayer.emphasisCircleGlowRangeTransitionAPIs to control the glow effect of the emphasis circle from the solid start to the fully transparent end and to set the transition options for theemphasisCircleGlowRangeproperty, respectively. - Introduce
radiusparameter forClickInteractionandLongClickInteractionto support an extra area around the interaction. - Add a way to specify options for
Expression.image(). - Introduce experimental
AnimatableModel,ModelMaterialPart,ModelNodePartAPIs to style the 3D location puck's overridable parts. Implementation example. - Introduce
modelRotationExpression,modelColor,modelColorExpression,modelColorMixIntensity,modelColorMixIntensityExpression,modelOpacityExpressiononLocationPuck3D. - Introduce experimental
LocationPuck3D.materialOverridesandLocationPuck3D.nodeOverridesAPI to allow model parts overrides. - Add vector icons support: SDK will now download vector icons and rasterize them locally, which will results in better icon quality for icons resized via icon-size. Changeable colors support: icon expression can now have optional parameter to change named colors described in SVG icons metadata.
- Add support for shadows from elevated structures.
- [compose] Introduce
LocationIndicatorLayerState.emphasisCircleGlowRangeandLocationIndicatorLayerState.emphasisCircleGlowRangeTransitionproperties. - [compose] Introduce
FillLayerState.fillZOffsetandFillLayerState.fillZOffsetTransitionproperties. - [compose] Introduce
FillExtrusionLayerState.fillExtrusionBaseAlignmentandFillExtrusionLayerState.fillExtrusionHeightAlignmentproperties. - [compose] Introduce
BackgroundLayerState.backgroundPitchAlignmentproperty. - [compose] Adds support for
fillZOffsetinPolygonAnnotationState,PolygonAnnotationGroupState. - [compose] Expose
MapViewportState.cameraForCoordinatesmethod. - [compose] Introduce
radiusparameter for all relevant compose functions for interactions to support an extra area around the interaction.
Bug fixes 🐞
- Fix dark shades caused by corner case light directions when
FillLayer.fillExtrusionEmissiveStrengthis set to high values (closer to 1). - Fix rendering of interleaved SDF and non-SDF icons in the same layer.
- Fix
LineLayer.lineEmissiveStrengthnot being applied to patterned lines. - Fix map flickering on some Mali and PowerVR GPUs.
- Fix shader fog computation being incorrectly enabled for landmarks.
- Handle empty payloads for offline resources.
- Encapsulate config expression in assertion expression when expected return type is known.
- Fixes a bug which caused icon shifts in some cases.
- Fix feature state update if layer contains data driven
measureLightexpression. - Fix the owning thread log error prints on legacy
OfflineRegioncreation. - Fix a crash in interpolate expression.
- Resolve usage of
GeoJsonSource.autoMaxZoomfor single feature. - Resolve dotted line issue with very long lines.
- Fix texture gather for shadows not being selected correctly by default.
- Performance improvements for runtime-added images.
- Fix
AndroidDeviceLocationProviderreporting an error when location permissions are not granted. - Improve exception handling inside Cronet providers when Cronet library failed to load.
Dependencies
- Update gl-native to v11.9.0-beta.1 and common to v24.9.0-beta.1.
Known issues
- Custom (non Mapbox-hosted) sprites could fail to load in some scenarios.
11.7.3 November 19, 2024
Bug fixes 🐞
- Fix map flickering on some Mali and PowerVR GPUs.
Dependencies
- Update gl-native to v11.7.3.
11.8.0 November 11, 2024
Breaking changes ⚠️
- Change the signature of experimental
MapboxMap.queryRenderedFeatures(RenderedQueryGeometry, TypedFeaturesetDescriptor, Value?, QueryRenderedFeaturesetFeaturesCallback)toMapboxMap.queryRenderedFeatures(TypedFeaturesetDescriptor, RenderedQueryGeometry?, Value?, QueryRenderedFeaturesetFeaturesCallback).RenderedQueryGeometrybeing NULL is equivalent to passing a bounding box encompassing the entire map viewport. - [compose] Change the signature of experimental
MapState.queryRenderedFeatures(RenderedQueryGeometry, TypedFeaturesetDescriptor, Expression?): ListtoMapState.queryRenderedFeatures(TypedFeaturesetDescriptor, RenderedQueryGeometry?, Expression?): List.RenderedQueryGeometrybeing NULL is equivalent to passing a bounding box encompassing the entire map viewport.
Features ✨ and improvements 🏁
- Introduce
Style.STANDARD_EXPERIMENTALstyle supporting featuresets and map interactions. Important: this style should not be used in production as the style definition on backend is a subject to change after v11.8.0 stable release! - Introduce fully typed map click and long click interactions working with
Style.STANDARD_EXPERIMENTAL:standardPoi,standardPlaceLabels,standardBuildings. - Use Cronet as the default network stack. If Cronet is not available, network stack defaults to OkHttp used in previous versions. More information available here.
- Introduce
OnClusterClickListenerandOnClusterLongClickListenerforCircleAnnotationManagerandPointAnnotationManager. These callbacks receive the clicked cluster represented by aClusterFeature. - Introduce experimental
getStyleGlyphURL/setStyleGlyphURLfunctions forMapboxMapandStyle. - Make
fill-extrusion-emissive-strengthproperty data-driven. - Dispatch view annotations update before rendering, so that view annotations and map layers are rendered simultaneously and thus decreasing the view annotations latency when using
ViewAnnotationUpdateMode.MAP_FIXED_DELAYmode. - Overscale composited tile components in offline.
- Skip rendering landmarks when the camera is inside them.
- Introduce experimental Geofencing API. Implementation example: SimpleGeofencingActivity.kt and ExtendedGeofencingActivity.kt.
- Introduce experimental
MapView.attribution.getMapAttributionDelegate().extraAttributionsto add custom attributions to the attribution dialog. - [compose] Deprecate all
AnnotationandAnnotationGroupcomposables that takeonClickparameter. Now all annotation interactions could be set with appropriateAnnotationInteractionsStateorAnnotationGroupInteractionsStatestored inAnnotationGroupState. - [compose] Introduce
AnnotationInteractionsStateandAnnotationGroupInteractionsStatestates that allow to set callbacks for annotation interactions viaonClicked()andonLongClicked().PointAnnotationGroupInteractionsStateandCircleAnnotationGroupInteractionsStatealso provide ability to set callbacks for interactions with clusters viaonClusterClickedandonClusterLongClicked. - [compose] Introduce
remember(e.g.rememberPolylineAnnotationGroupInteractionsStateandrememberPolylineAnnotationInteractionsState) composable functions to create, init and remember all types ofAnnotationInteractionsStateandAnnotationGroupInteractionsState. - [compose] Introduce
<AnnotationType>InteractionsState.isDraggable/<AnnotationType>GroupInteractionsState.isDraggableAPI for all annotation types allowing to drag annotations. CallbacksonDragStarted(),onDragged(),onDragFinished()are added as well. - [compose] Introduce experimental
Attribution(..., geofencingDialog)compose function to customize Geofencing consent dialog. - Annotate
Bitmap.toMapboxImage()and related as delicate API due to its native memory allocation. - Use fallback engine if cronet fails to load.
Bug fixes 🐞
- Fix terrain related snapshotter crash.
- Handle empty payloads for offline resources.
- Improve zooming performance on dynamic Standard terrain and optimize terrain re-rendering performance on e.g routeline
line-trim-offsetchange. - Respect polygons with holes on querying rendered features.
- Fix self-overlap of line corners when large
line-widthis used. - Adjust conflation intersection test padding to fix disappearing
fill-extrusion. - Fix TileCover bug with polygon horizontal edges.
- Fix a bug with image dependent paint properties not getting a correct value after image become available.
- Clear tile pyramid on color theme change before the tiles are updated.
- Fix missing images notifications for images within coalesce expression when other images in coalesce are present. Image expressions with two arguments are no longer being considered present if only second image is present.
- Return operation error for featurestate related API in case the featureset is not valid.
- Fix crash on style pack load when no access token is set.
- Fix crash in TerrainRenderer when using snapshotter.
- Fix crash on re-creation of a custom raster source when different options are provided.
- Return parsing errors if runtime added style import JSON is not valid.
- Fix missing models in rendering result if
reduceMemoryUseis called before taking snapshot. - Fix the incorrect behaviour when using
symbol-z-oderproperty. - Fix
raster-particletrail discontinuity at the antimeridian. - Fix an Android 12 specific bug where location puck custom animator options lambda without explicit
ValueAnimator.durationresulted induration = 0. - Fix a rare
android.content.res.Resources$NotFoundExceptionhappening when creating aMapView. - Fix a rare
NullPointerExceptionhappening when fling gesture event is recognized. - Fix
StandardPoiFeature.geometryto have a concretePointtype instead ofGeometryinterface. - Fix a bug in
GeoJsonSource.autoMaxZoomleading to rendering artifacts with long dotted line layers. - Fix a crash if Cronet failed to init on device by fallbacking to OkHttp.
- Disable false-positive lint error "Incorrect number of expressions".
- Fix possible out of memory in native heap during annotation manager annotation updates (
AnnotationManager.update(...)). - Fix CronetProviderInstaller proguard missing rule.
- Fix rare crash due to native library not loaded when receiving background locations.
- Do not modify file description structure when reading resource files.
- Fix lifecycle calculation in case activity destruction is in progress.
Dependencies
- Update gl-native to v11.8.0 and common to v24.8.0.
11.7.2 November 05, 2024
Bug fixes 🐞
- Fix terrain related snapshotter crash.
- Handle empty payloads for offline resources.
- Do not modify file description structure when reading resource files.
Dependencies
- Update gl-native to v11.7.2 and common to v24.7.2.
11.8.0-rc.1 October 23, 2024
Bug fixes 🐞
- Fix an Android 12 specific bug where location puck custom animator options lambda without explicit
ValueAnimator.durationresulted induration = 0. - Fix a rare
android.content.res.Resources$NotFoundExceptionhappening when creating aMapView. - Fix a rare
NullPointerExceptionhappening when fling gesture event is recognized. - Fix
StandardPoiFeature.geometryto have a concretePointtype instead ofGeometryinterface. - Fix a bug in
GeoJsonSource.autoMaxZoomleading to rendering artifacts with long dotted line layers. - Fix a crash if Cronet failed to init on device by fallbacking to OkHttp.
Dependencies
- Update gl-native to v11.8.0-rc.1 and common to v24.8.0-rc.1.
11.8.0-beta.1 October 14, 2024
Features ✨ and improvements 🏁
- Introduce
Style.STANDARD_EXPERIMENTALstyle supporting featuresets and map interactions. Important: this style should not be used in production as the style definition on backend is a subject to change after v11.8.0 stable release! - Introduce fully typed map click and long click interactions working with
Style.STANDARD_EXPERIMENTAL:standardPoi,standardPlaceLabels,standardBuildings. - Use Cronet as the default network stack. If Cronet is not available, network stack defaults to OkHttp used in previous versions. More information available here.
- Introduce
OnClusterClickListenerandOnClusterLongClickListenerforCircleAnnotationManagerandPointAnnotationManager. These callbacks receive the clicked cluster represented by aClusterFeature. - Introduce experimental
getStyleGlyphURL/setStyleGlyphURLfunctions forMapboxMapandStyle. - Make
fill-extrusion-emissive-strengthproperty data-driven. - Dispatch view annotations update before rendering, so that view annotations and map layers are rendered simultaneously and thus decreasing the view annotations latency when using
ViewAnnotationUpdateMode.MAP_FIXED_DELAYmode. - Overscale composited tile components in offline.
- Skip rendering landmarks when the camera is inside them.
- Introduce experimental Geofencing API. Implementation example: GeofencingActivity.kt
- Introduce experimental
MapView.attribution.getMapAttributionDelegate().extraAttributionsto add custom attributions to the attribution dialog. - [compose] Deprecate all
AnnotationandAnnotationGroupcomposables that takeonClickparameter. Now all annotation interactions could be set with appropriateAnnotationInteractionsStateorAnnotationGroupInteractionsStatestored inAnnotationGroupState. - [compose] Introduce
AnnotationInteractionsStateandAnnotationGroupInteractionsStatestates that allow to set callbacks for annotation interactions viaonClicked()andonLongClicked().PointAnnotationGroupInteractionsStateandCircleAnnotationGroupInteractionsStatealso provide ability to set callbacks for interactions with clusters viaonClusterClickedandonClusterLongClicked. - [compose] Introduce
remember(e.g.rememberPolylineAnnotationGroupInteractionsStateandrememberPolylineAnnotationInteractionsState) composable functions to create, init and remember all types ofAnnotationInteractionsStateandAnnotationGroupInteractionsState. - [compose] Introduce
<AnnotationType>InteractionsState.isDraggable/<AnnotationType>GroupInteractionsState.isDraggableAPI for all annotation types allowing to drag annotations. CallbacksonDragStarted(),onDragged(),onDragFinished()are added as well. - [compose] Introduce experimental
Attribution(..., geofencingDialog)compose function to customize Geofencing consent dialog.
Bug fixes 🐞
- Improve zooming performance on dynamic Standard terrain and optimize terrain re-rendering performance on e.g routeline
line-trim-offsetchange. - Respect polygons with holes on querying rendered features.
- Fix self-overlap of line corners when large
line-widthis used. - Adjust conflation intersection test padding to fix disappearing
fill-extrusion. - Fix TileCover bug with polygon horizontal edges.
- Fix a bug with image dependent paint properties not getting a correct value after image become available.
- Clear tile pyramid on color theme change before the tiles are updated.
- Fix missing images notifications for images within coalesce expression when other images in coalesce are present. Image expressions with two arguments are no longer being considered present if only second image is present.
- Return operation error for featurestate related API in case the featureset is not valid.
- Fix crash on style pack load when no access token is set.
- Fix crash in TerrainRenderer when using snapshotter.
- Fix crash on re-creation of a custom raster source when different options are provided.
- Return parsing errors if runtime added style import JSON is not valid.
- Fix missing models in rendering result if
reduceMemoryUseis called before taking snapshot. - Fix the incorrect behaviour when using
symbol-z-oderproperty. - Fix
raster-particletrail discontinuity at the antimeridian.
Dependencies
- Update gl-native to v11.8.0-beta.1 and common to v24.8.0-beta.1.
11.7.1 October 10, 2024
Bug fixes 🐞
- Respect polygons with holes on querying rendered features.
Dependencies
- Update gl-native to v11.7.1 and common to v24.7.1.
11.7.0 September 26, 2024
Features ✨ and improvements 🏁
- [compose] Introduce
PointAnnotationState.iconOcclusionOpacity,PointAnnotationState.textOcclusionOpacityto control occlusion opacity for individual point annotation. - [compose] Remove
MapboxExperimentalfromPolylineAnnotationGroupState.lineOcclusionOpacity,PointAnnotationGroupState.iconOcclusionOpacity,PointAnnotationGroupState.textOcclusionOpacity. - [compose] Expose data-driven properties on
AnnotationGroupStates. Now it's possible to set data-driven properties globally onAnnotationGroupStateand specify per-annotation overrides inAnnotationState. Setting global property value onAnnotationGroupStatecould introduce performance improvements when the amount of annotations is large. - [compose] Remove experimental
ModelLayerState.modelFrontCutoff. - [compose] Introduce experimental
GeoJsonSourceState.autoMaxZoomproperty to resolve rendering artifacts for features that use wide blur (e.g. fill extrusion ground flood light or circle layer). - [compose] Introduce experimental
ClipLayerState.clipLayerScopeAPI to remove data from certain style fragments only. - [compose] Introduce experimental
PointAnnotationState.symbolZOffsetproperty. - [compose] Introduce experimental
PointAnnotationGroupState.symbolElevationReferenceproperty. - [compose] Introduce experimental
SymbolLayerState.symbolElevationReferenceandSymbolLayerState.symbolZOffsetproperties. - [compose] Introduce experimental
SymbolLayerState.symbolZOffsetTransitionAPI. - [compose] Introduce experimental
StyleInteractionsState,StyleImportsInteractionsState,LayerInteractionsStateto handle interactions to the style, style imports and layers. - [compose] Introduce experimental
StyleImportcomposable functions to acceptStyleImportsInteractionsStateas an parameter. - [compose] Introduce experimental
LayerInteractionsStateas part of*LayerStateof layers that's driven by a source. - [compose] Introduce experimental
MapState.getFeatureState,MapState.setFeatureState,MapState.removeFeatureStateandMapState.resetFeatureStateAPIs. - [compose] Introduce
StyleStatethat groupsStyleImportsConfig,StyleInteractionsState,Projection,AtmosphereState,TerrainState,LightsState,styleTransition. - [compose] Introduce
GenericStylecomposable function that usesStyleStateas parameter and deprecateGenericStylethat takes individual light/terrain/projection states. - [compose] Introduce
MapStylecomposable function that usesStyleStateas parameter and deprecateMapStylethat takes individual light/terrain/projection states. - [compose] Introduce
StyleImportStatethat groupsImportConfigsandStyleImportInteractionsState. - [compose] Introduce
StyleImportcomposable function that usesStyleImportStateas parameter and deprecateStyleImportthat takesImportConfigs. - Publish Mapbox Maps Android artifacts using NDK 27 and support for 16 KB page sizes.
- The new artifacts are available by appending
-ndk27to the artifact ID (for example,com.mapbox.maps:android-ndk27:11.7.0).
- The new artifacts are available by appending
- Introduce experimental interactive feature elements and related APIs. Those APIs provide the convenient way to add the click / long click listener to layer / featureset / map itself with
MapboxMap.addInteraction. - Expose
lineTrimColorandlineTrimFadeRangeonLineLayerwhich allow to set custom color for trimmed line and fade effect for trim. Update navigation example to use those properties. - Introduce
PointAnnotation.iconOcclusionOpacity,PointAnnotation.textOcclusionOpacityto control occlusion opacity for individual point annotation. - Remove
MapboxExperimentalfromSymbolLayer.iconOcclusionOpacity,SymbolLayer.textOcclusionOpacityand these properties are now supported on global zoom levels with default value changed to0. - Remove
MapboxExperimentalfromPolylineAnnotationManager.lineOcclusionOpacity,PointAnnotationManager.iconOcclusionOpacity,PointAnnotationManager.textOcclusionOpacity. - Expose data-driven properties on
AnnotationManagers. Now it's possible to set data-driven properties globally onAnnotationManagerand specify per-annotation overrides. Setting global property value onAnnotationManagercould introduce performance improvements when the amount of annotations is large. - Remove experimental
ModelLayer.modelFrontCutoff. - Introduce experimental
GeoJsonSource.autoMaxZoomproperty to resolve rendering artifacts for features that use wide blur (e.g. fill extrusion ground flood light or circle layer). - Introduce static
HttpServiceFactory.setCancellationCallbackAPI. - Reduce style parsing time.
- Enable multiple meta tiling schemes for composited sources.
- Expose experimental
ClipLayer.clipLayerScopeAPI to remove data from certain style fragments only. - Expose experimental
PointAnnotation.symbolZOffsetproperty. - Expose experimental
PointAnnotationManager.symbolElevationReferenceproperty. - Expose experimental
SymbolLayer.symbolElevationReferenceandSymbolLayer.symbolZOffsetproperties. - Expose experimental
SymbolLayer.symbolZOffsetTransitionAPI. - Introduce experimental
MapboxMap.queryRenderedFeatureallowing to get anInteractiveFeaturefor given geometry,FeaturesetHolderand optional filter. - Introduce experimental
FillExtrusionLayer.fillExtrusionLineWidthandFillExtrusionLayerState.fillExtrusionLineWidthin Compose allowing to switch fill extrusion rendering into wall rendering mode. Use this property to render the feature with the given width over the outlines of the geometry. - Add missing experimental annotation to
PointAnnotationManager.symbolZOffsetandPolylineAnnotationManager.lineZOffset - Deprecate
PolylineAnnotationManager.lineTrimColorin favour ofPolylineAnnotationManager.lineTrimColorString/PolylineAnnotationManager.lineTrimColorInt.
Bug fixes 🐞
- [compose] Fix
ViewAnnotationsize not being updated when content layout changes. - [compose] Fix
UnsatisfiedLinkErrorissue when rendering preview. - Return parsing errors if runtime added style import JSON is not valid.
- Fix color theme change before the tiles are updated.
- Fix annotation issues with click / long click callback ordering and dragging. Now the order of triggering the callbacks / dragging is determined: from top-level rendered annotation to bottom-level one.
- Fix
OnAnnotationInteractionListenernot triggered if anyOnAnnotationClickListener.onAnnotationClickreturns true. - Fix incorrect layer updates when using
ClipLayer.clipLayerTypesorClipLayerState.clipLayerTypesin Compose. - Fix shadow rendering issues when using
FillExtrusionLayer.fillExtrusionCutoffFadeRangeorFillExtrusionLayerState.fillExtrusionCutoffFadeRange. - Significantly reduce the rate at which raster-particle trails cross each other.
- Fix normal offset to improve shadow accuracy.
- Fix data synchronization between renderer and the main threads on map resize.
- Regenerate location indicator mipmap on image change.
- Fix landmark visibility issues near tile borders.
- Fix elevated line depth occlusion issue in 2D mode.
- Fix Dynamic View Annotation position update for annotated geojson feature with
allowZElevateto be true. - Fix race condition between
setFeatureStateandremoveFeatureState/resetFeatureStatesresulting in feature state not being applied or removed. - Fix a crash when calling
CameraAnimationsPlugin.easeTo()with empty camera options orCameraAnimationsPlugin.playAnimatorsSequentially()/CameraAnimationsPlugin.playAnimatorsTogether()with an empty array of animators. - Fix ongoing animations being canceled when
CameraAnimationsPlugin.flyTo()with empty camera options is called. - Fix simultaneous scale and rotation gestures not working when the first registered rotation is a scale one.
- Fix crash on Android tilestore where null data was returned.
- Fix the incorrect behaviour when using
SymbolLayer.symbolZOrderproperty. - Fix retrieval of tilesets for 3d tiles in offline mode.
- Fix rendering errors of patterns on high zoom levels.
- Fix a bug where style changes weren't reflected after the source layer of a layer was changed.
Dependencies
- Update gl-native to v11.7.0 and common to v24.7.0.
11.7.0-rc.1 September 16, 2024
Breaking changes ⚠️
- Experimental interactive features API changes:
FeatureStateValuewas removed in favour of genericFeatureState.MapboxMap.setFeatureStatetakes a singleFeatureStateclass instead of varargFeatureStateValue.BaseInteractiveFeaturewas removed in favour ofInteractiveFeature.InteractiveFeature.stateis now a generic ofFeatureState.MapboxMap.getFeatureStatesignature changed to be generic and return typedFeatureStatein the newFeatureStateCallback.
Features ✨ and improvements 🏁
- Introduce experimental
MapboxMap.queryRenderedFeatureallowing to get anInteractiveFeaturefor given geometry,FeaturesetHolderand optional filter. - Introduce experimental
FillExtrusionLayer.fillExtrusionLineWidthandFillExtrusionLayerState.fillExtrusionLineWidthin Compose allowing to switch fill extrusion rendering into wall rendering mode. Use this property to render the feature with the given width over the outlines of the geometry. - Add missing experimental annotation to
PointAnnotationManager.symbolZOffsetandPolylineAnnotationManager.lineZOffset - Deprecate
PolylineAnnotationManager.lineTrimColorin favour ofPolylineAnnotationManager.lineTrimColorString/PolylineAnnotationManager.lineTrimColorInt. - [compose] Introduce experimental
StyleInteractionsState,StyleImportsInteractionsState,LayerInteractionsStateto handle interactions to the style, style imports and layers. - [compose] Introduce experimental
StyleImportcomposable functions to acceptStyleImportsInteractionsStateas an parameter. - [compose] Introduce experimental
LayerInteractionsStateas part of*LayerStateof layers that's driven by a source. - [compose] Introduce experimental
MapState.getFeatureState,MapState.setFeatureState,MapState.removeFeatureStateandMapState.resetFeatureStateAPIs. - [compose] Introduce
StyleStatethat groupsStyleImportsConfig,StyleInteractionsState,Projection,AtmosphereState,TerrainState,LightsState,styleTransition. - [compose] Introduce
GenericStylecomposable function that usesStyleStateas parameter and deprecateGenericStylethat takes individual light/terrain/projection states. - [compose] Introduce
MapStylecomposable function that usesStyleStateas parameter and deprecateMapStylethat takes individual light/terrain/projection states. - [compose] Introduce
StyleImportStatethat groupsImportConfigsandStyleImportInteractionsState. - [compose] Introduce
StyleImportcomposable function that usesStyleImportStateas parameter and deprecateStyleImportthat takesImportConfigs.
Bug fixes 🐞
- Fix a crash when calling
CameraAnimationsPlugin.easeTo()with empty camera options orCameraAnimationsPlugin.playAnimatorsSequentially()/CameraAnimationsPlugin.playAnimatorsTogether()with an empty array of animators. - Fix ongoing animations being canceled when
CameraAnimationsPlugin.flyTo()with empty camera options is called. - Fix simultaneous scale and rotation gestures not working when the first registered rotation is a scale one.
- Fix crash on Android tilestore where null data was returned.
- Fix the incorrect behaviour when using
SymbolLayer.symbolZOrderproperty. - Fix retrieval of tilesets for 3d tiles in offline mode.
- Fix rendering errors of patterns on high zoom levels.
- Fix a bug where style changes weren't reflected after the source layer of a layer was changed.
11.6.1 September 10, 2024
Bug fixes 🐞
- Fix for offline retrieval of 3D tiles for
Style.STANDARD.
Dependencies
- Update gl-native to v11.6.1 and common to v24.6.1.
11.7.0-beta.1 September 03, 2024
Features ✨ and improvements 🏁
- [compose] Introduce
PointAnnotationState.iconOcclusionOpacity,PointAnnotationState.textOcclusionOpacityto control occlusion opacity for individual point annotation. - [compose] Remove
MapboxExperimentalfromPolylineAnnotationGroupState.lineOcclusionOpacity,PointAnnotationGroupState.iconOcclusionOpacity,PointAnnotationGroupState.textOcclusionOpacity. - [compose] Expose data-driven properties on
AnnotationGroupStates. Now it's possible to set data-driven properties globally onAnnotationGroupStateand specify per-annotation overrides inAnnotationState. Setting global property value onAnnotationGroupStatecould introduce performance improvements when the amount of annotations is large. - [compose] Remove experimental
ModelLayerState.modelFrontCutoff. - [compose] Introduce experimental
GeoJsonSourceState.autoMaxZoomproperty to resolve rendering artifacts for features that use wide blur (e.g. fill extrusion ground flood light or circle layer). - [compose] Introduce experimental
ClipLayerState.clipLayerScopeAPI to remove data from certain style fragments only. - [compose] Introduce experimental
PointAnnotationState.symbolZOffsetproperty. - [compose] Introduce experimental
PointAnnotationGroupState.symbolElevationReferenceproperty. - [compose] Introduce experimental
SymbolLayerState.symbolElevationReferenceandSymbolLayerState.symbolZOffsetproperties. - [compose] Introduce experimental
SymbolLayerState.symbolZOffsetTransitionAPI. - Introduce experimental interactive feature elements and related APIs. Those APIs provide the convenient way to add the click / long click listener to layer / featureset / map itself with
MapboxMap.addInteraction. - Expose
lineTrimColorandlineTrimFadeRangeonLineLayerwhich allow to set custom color for trimmed line and fade effect for trim. Update navigation example to use those properties. - Introduce
PointAnnotation.iconOcclusionOpacity,PointAnnotation.textOcclusionOpacityto control occlusion opacity for individual point annotation. - Remove
MapboxExperimentalfromSymbolLayer.iconOcclusionOpacity,SymbolLayer.textOcclusionOpacityand these properties are now supported on global zoom levels with default value changed to0. - Remove
MapboxExperimentalfromPolylineAnnotationManager.lineOcclusionOpacity,PointAnnotationManager.iconOcclusionOpacity,PointAnnotationManager.textOcclusionOpacity. - Expose data-driven properties on
AnnotationManagers. Now it's possible to set data-driven properties globally onAnnotationManagerand specify per-annotation overrides. Setting global property value onAnnotationManagercould introduce performance improvements when the amount of annotations is large. - Remove experimental
ModelLayer.modelFrontCutoff. - Introduce experimental
GeoJsonSource.autoMaxZoomproperty to resolve rendering artifacts for features that use wide blur (e.g. fill extrusion ground flood light or circle layer). - Introduce static
HttpServiceFactory.setCancellationCallbackAPI. - Reduce style parsing time.
- Enable multiple meta tiling schemes for composited sources.
- Expose experimental
ClipLayer.clipLayerScopeAPI to remove data from certain style fragments only. - Expose experimental
PointAnnotation.symbolZOffsetproperty. - Expose experimental
PointAnnotationManager.symbolElevationReferenceproperty. - Expose experimental
SymbolLayer.symbolElevationReferenceandSymbolLayer.symbolZOffsetproperties. - Expose experimental
SymbolLayer.symbolZOffsetTransitionAPI.
Bug fixes 🐞
- [compose] Fix
UnsatisfiedLinkErrorissue when rendering preview. - Fix annotation issues with click / long click callback ordering and dragging. Now the order of triggering the callbacks / dragging is determined: from top-level rendered annotation to bottom-level one.
- Fix
OnAnnotationInteractionListenernot triggered if anyOnAnnotationClickListener.onAnnotationClickreturns true. - Fix incorrect layer updates when using
ClipLayer.clipLayerTypesorClipLayerState.clipLayerTypesin Compose. - Fix shadow rendering issues when using
FillExtrusionLayer.fillExtrusionCutoffFadeRangeorFillExtrusionLayerState.fillExtrusionCutoffFadeRange. - Significantly reduce the rate at which raster-particle trails cross each other.
- Fix normal offset to improve shadow accuracy.
- Fix data synchronization between renderer and the main threads on map resize.
- Regenerate location indicator mipmap on image change.
- Fix landmark visibility issues near tile borders.
- Fix elevated line depth occlusion issue in 2D mode.
- Fix Dynamic View Annotation position update for annotated geojson feature with
allowZElevateto be true. - Fix race condition between
setFeatureStateandremoveFeatureState/resetFeatureStatesresulting in feature state not being applied or removed.
Dependencies
- Update gl-native to v11.7.0-beta.2 and common to v24.7.0-beta.2.
Known issues
- Experimental
GeoJsonSource.autoMaxZoomandGeoJsonSourceState.autoMaxZoomwill returnnullvalue even after it's set.
11.6.0 August 16, 2024
Breaking changes ⚠️
- [compose] Remove
StyleImageconstructor withBitmapImage, userememberStyleImagecomposable function to build it instead. - [compose] Move layer properties within
*Layercomposable functions to*LayerStateclasses, use the convenient method*Layer(sourceState, layerId, init)with trailing lambda for easier migration. - [compose] Move
onClicklistener from last parameter to the second last parameter ofAnnotationandAnnotationGroupcomposable functions. - [compose] Move properties within
*Annotationand*AnnotationGroupcomposable functions to the new*AnnotationStateand*AnnotationGroupStateclasses, use the convenient method*Annotation(point, onClick, init)and*AnnotationGroup(annotations, annotationConfig, onClick, init)with trailing lambda for easier migration. - [compose] Replace color int and color string property types in
*Annotationwith composeColortype. - [compose] Replace
PointAnnotation.iconImageBitmapandPointAnnotation.iconImagewithPointAnnotationState.iconImagewithIconImagetype,IconImagecan be constructed with either a image idStringor aBitmap, and introducedrememberIconImageto build and remember a bitmap fromPainteror from a drawable resource id. - [compose] Introduce
StandardStyleConfigurationStateclass to hold the configurations ofMapboxStandardStyle, and movelightPresetconfig fromMapboxStandardStyletoStandardStyleConfigurationState; consider using overload methodMapboxStandardStylewith trailing init lambda for easier migration. - Experimental
CustomRasterSourceOptions.Buildernow acceptsCustomRasterSourceClientcontainingCustomRasterSourceTileStatusChangedCallbackinstead ofCustomRasterSourceTileStatusChangedCallbackinterface directly.
Features ✨ and improvements 🏁
- [compose] Promote Compose Extension to stable.
- [compose] Mark
MapState,MapViewportState,TerrainState, light states and source states asStableas they are internally backed byMutableState. - [compose] Add more config options including
showPlaceLabels,showRoadLabels,showPointOfInterestLabels,showTransitLabelsandfonttoStandardStyleConfigurationState. - [compose] Introduce
StyleImageconstructor withImagetype, and addrememberStyleImagecomposable functions to create and rememberStyleImage. - [compose] Add extension function to
*AnnotationOptionsto handle composeColor, use it in*AnnotationGroupcomposable functions for convenience. - [compose] Add style transition parameter in
GenericStyle,MapStyleandMapboxStandardStyle. - [compose] Extend
StandardStyleConfigurationStatewiththeme: ThemeValueandshow3dObjects: BooleanValueproperties. - [compose] Introduce composable function
MapboxStandardSatelliteStylewith dedicatedStandardSatelliteStyleConfigurationState. - Add new
Style.STANDARD_SATELLITEstyle that combines updated satellite imagery and vector layers. - Introduce new import configuration properties for
Style.STANDARD:theme,show3dObjectswhich could be set withStyle.setStyleImportConfigProperty. - Modify
awaitCameraForCoordinatesextension function to useMapCameraManagerDelegateas receiver type. - Modify
queryRenderedFeaturesandquerySourceFeaturesextension functions to useMapFeatureQueryDelegateas receiver type. - Introduce asynchronous overloaded method
ViewAnnotationManager.cameraForAnnotationsbetter covering some corner cases. - Make use of asynchronous
MapboxMap.cameraForCoordinatesin Mapbox overlay plugin better covering some corner cases. - Mark synchronous methods
MapboxMap.cameraForCoordinatesandViewAnnotationManager.cameraForAnnotationswith@MapboxDelicateApi. Consider using asynchronous overloaded methods instead. - Deprecate
MapboxMap.getDebug()/MapboxMap.setDebug()in favour ofMapView.debugOptionstaking new enhanced enumMapViewDebugOptionsas an argument. - Introduce
MapViewDebugOptions.CAMERAandMapViewDebugOptions.PADDINGdebug options to track current camera state and visualize camera paddings. - Expose experimental
ClipLayerto remove 3D data (fill extrusions, landmarks, instanced trees) and symbols. - Enable r8 optimisations for all the Mapbox extensions and plugins in consumer proguard file, the optimisation will apply when minify is enabled in app's build settings.
- Enable direct rendering into
CustomRasterSourcetiles. - Introduce a new
allowZElevateoption inViewAnnotationOptions. When set to true, the annotation will be positioned on the rooftops of buildings, including both fill extrusions and models. - Support negative values for
CircleLayer.circleBlurto render inner glow effect. - Support for model-uris as properties in geojson model layers.
- Allow usage of the tile leveling schemes with maximum zoom exceeding 16.
Bug fixes 🐞
- [compose] Fix minZoom/maxZoom not working for layers.
- [compose] Fix
java.lang.UnsupportedOperationExceptionwhen settingtextWritingModeandtextVariableAnchor. - Fix compass view ignoring
enabledoption when it is set inupdateSettings(). - Fix background locations not received when unregistering other providers.
- Improve
linePatternprecision. - Fix local glyph rasterization to ensure the correct Typeface is used.
- Fix
CustomRasterSourcerendering when camera shows antimeridian or multiple world copies. - Fix elevated line occlusion issue in 2D mode.
- Fix blinking of layer as you are panning across the antimeridian.
- Fix
modelFrontCutoffproperty for meshopt models. - Align location provider default displacement for Android and Google providers.
Dependencies
- Update gl-native to v11.6.0 and common to v24.6.0.
11.6.0-rc.1 August 02, 2024
Features ✨ and improvements 🏁
- Support negative values for
CircleLayer.circleBlurto render inner glow effect. - Add new
Style.STANDARD_SATELLITEstyle that combines updated satellite imagery and vector layers. - Introduce new import configuration properties for
Style.STANDARD:theme,show3dObjectswhich could be set withStyle.setStyleImportConfigProperty. - [compose] Extend
StandardStyleConfigurationStatewiththeme: ThemeValueandshow3dObjects: BooleanValueproperties. - [compose] Introduce composable function
MapboxStandardSatelliteStylewith dedicatedStandardSatelliteStyleConfigurationState.
Bug fixes 🐞
- Fix elevated line occlusion issue in 2D mode.
Dependencies
- Update gl-native to v11.6.0-rc.1 and common to v24.6.0-rc.1.
Known issues
- Experimental
ClipLayer's propertyclipLayerTypesis not updated in runtime. The fix is expected to land in stable 11.6.0.
11.5.1 July 25, 2024
Bug fixes 🐞
- Fix local glyph rasterization to ensure the correct Typeface is used.
- Fix map freezing and huge memory consumption issue when using 3D models.
- Fix
CustomRasterSourcerendering when camera shows antimeridian or multiple world copies. - Fix shadow rendering issues with
FillExtrusionLayer.fillExtrusionCutoffFadeRange.
Dependencies
- Update gl-native to v11.5.2.
11.6.0-beta.1 July 19, 2024
Breaking changes ⚠️
- [compose] Remove
StyleImageconstructor withBitmapImage, userememberStyleImagecomposable function to build it instead. - [compose] Move layer properties within
*Layercomposable functions to*LayerStateclasses, use the convenient method*Layer(sourceState, layerId, init)with trailing lambda for easier migration. - [compose] Move
onClicklistener from last parameter to the second last parameter ofAnnotationandAnnotationGroupcomposable functions. - [compose] Move properties within
*Annotationand*AnnotationGroupcomposable functions to the new*AnnotationStateand*AnnotationGroupStateclasses, use the convenient method*Annotation(point, onClick, init)and*AnnotationGroup(annotations, annotationConfig, onClick, init)with trailing lambda for easier migration. - [compose] Replace color int and color string property types in
*Annotationwith composeColortype. - [compose] Replace
PointAnnotation.iconImageBitmapandPointAnnotation.iconImagewithPointAnnotationState.iconImagewithIconImagetype,IconImagecan be constructed with either a image idStringor aBitmap, and introducedrememberIconImageto build and remember a bitmap fromPainteror from a drawable resource id. - [compose] Introduce
StandardStyleConfigurationStateclass to hold the configurations ofMapboxStandardStyle, and movelightPresetconfig fromMapboxStandardStyletoStandardStyleConfigurationState; consider using overload methodMapboxStandardStylewith trailing init lambda for easier migration. - Experimental
CustomRasterSourceOptions.Buildernow acceptsCustomRasterSourceClientcontainingCustomRasterSourceTileStatusChangedCallbackinstead ofCustomRasterSourceTileStatusChangedCallbackinterface directly.
Features ✨ and improvements 🏁
- [compose] Promote Compose Extension to stable.
- [compose] Mark
MapState,MapViewportState,TerrainState, light states and source states asStableas they are internally backed byMutableState. - [compose] Add more config options including
showPlaceLabels,showRoadLabels,showPointOfInterestLabels,showTransitLabelsandfonttoStandardStyleConfigurationState. - [compose] Introduce
StyleImageconstructor withImagetype, and addrememberStyleImagecomposable functions to create and rememberStyleImage. - [compose] Add extension function to
*AnnotationOptionsto handle composeColor, use it in*AnnotationGroupcomposable functions for convenience. - [compose] Add style transition parameter in
GenericStyle,MapStyleandMapboxStandardStyle. - Modify
awaitCameraForCoordinatesextension function to useMapCameraManagerDelegateas receiver type. - Modify
queryRenderedFeaturesandquerySourceFeaturesextension functions to useMapFeatureQueryDelegateas receiver type. - Introduce asynchronous overloaded method
ViewAnnotationManager.cameraForAnnotationsbetter covering some corner cases. - Make use of asynchronous
MapboxMap.cameraForCoordinatesin Mapbox overlay plugin better covering some corner cases. - Mark synchronous methods
MapboxMap.cameraForCoordinatesandViewAnnotationManager.cameraForAnnotationswith@MapboxDelicateApi. Consider using asynchronous overloaded methods instead. - Deprecate
MapboxMap.getDebug()/MapboxMap.setDebug()in favour ofMapView.debugOptionstaking new enhanced enumMapViewDebugOptionsas an argument. - Introduce
MapViewDebugOptions.CAMERAandMapViewDebugOptions.PADDINGdebug options to track current camera state and visualize camera paddings. - Expose experimental
ClipLayerto remove 3D data (fill extrusions, landmarks, instanced trees) and symbols. - Enable r8 optimisations for all the Mapbox extensions and plugins in consumer proguard file, the optimisation will apply when minify is enabled in app's build settings.
- Align default displacement for Android and Google location providers.
- Enable direct rendering into
CustomRasterSourcetiles. - Introduce a new
allowZElevateoption inViewAnnotationOptions. When set to true, the annotation will be positioned on the rooftops of buildings, including both fill extrusions and models.
Bug fixes 🐞
- [compose] Fix minZoom/maxZoom not working for layers.
- [compose] Fix
java.lang.UnsupportedOperationExceptionwhen settingtextWritingModeandtextVariableAnchor. - Fix compass view ignoring
enabledoption when it is set inupdateSettings(). - Fix background locations not received when unregistering other providers.
- Improve
linePatternprecision. - Fix local glyph rasterization to ensure the correct Typeface is used.
- Fix
CustomRasterSourcerendering when camera shows antimeridian or multiple world copies.
Known issues
ClipLayer.clipLayerTypescould not be updated with a layer setter. Layer has to be re-added to update it. This is expected to be fixed in v11.6.0-rc.1.
Dependencies
- Update gl-native to v11.6.0-beta.1 and common to v24.6.0-beta.1.
11.4.2 July 17, 2024
Bug fixes 🐞
- Fix local glyph rasterization to ensure the correct Typeface is used.
Dependencies
- Update gl-native to v11.4.1.
11.5.0 July 05, 2024
Breaking changes ⚠️
- [compose] Make
MapboxMap.onMapClickListenerandMapboxMap.onMapLongClickListenernullable and default tonull. - [compose] Rename
ImportConfigtoImportConfigs. - [compose] Move
MapboxMap.mapEventsto events flows inMapState. - [compose] Move
MapboxMap.gesturesSettingstoMapState. - [compose] Move
Projectiontogeneratedpackage and renamedefaultvalues toDEFAULT. - [compose] Rename
LightPresettoLightPresetValue. - [compose] Rename
TerrainState.disabledtoTerrainState.DISABLED. - [compose] Replace terrain property
ExaggerationwithDoubleValue. - [compose] Replace concrete
AtmosphereStateproperties (e.g.HighColor,HorizonBlend,SpaceColor, etc) with generic ones:ColorValue,DoubleValue,DoubleRangeValue. - [compose] Replace concrete Layer properties(e.g.
CircleColor,CircleOpacity,IconImageetc) with generic ones:ColorValue,DoubleValue,ImageValueetc. - [compose] Replace concrete
GeoJsonSourceState,ImageSourceState,RasterArraySourceState,RasterDemSourceState,RasterSourceState,SourceProperties,VectorSourceStateproperties with generic ones (e.g.BooleanValue,StringValue,LongValue...). - [compose] Move
GeoJSONDataoutside ofgeneratedpackage. - Remove experimental
CustomRasterSource.invalidateRegionandCustomRasterSource.invalidateTilemethods and change signature ofCustomRasterSource.setTileData. - Remove experimental
CustomRasterSource.tileCacheBudgetgetter and setter. If needed, caching should be implemented on user's side. - Remove experimental
MapboxMapandStylemethods:invalidateStyleCustomRasterSourceTile,invalidateStyleCustomRasterSourceRegion; change signature ofsetStyleCustomRasterSourceTileDatamethod inMapboxMapandStyle.
Features ✨ and improvements 🏁
- [compose] Enable r8 optimisations of compose extension in consumer proguard file, the optimisation will apply when minify is enabled in app's build settings.
- [compose] Introduce
StyleImportcomposable API to be used in theGenericStyle,MapStyleandMapboxStandardStyle. - [compose] Introduce
MapStatethat can be hoisted to interact with map states, such as query rendered features, subscribe to map events and configure gestures settings. - [compose] Expose
TerrainStateandAtmosphereStateproperties asMutableState. - [compose] Introduce
AmbientLightState,DirectionalLightState,FlatLightStateas separate states;LightsStatecan be constructed by combination ofDirectionalLightStateandAmbientLightStateor withFlatLightStateto be set to the style. - [compose] Avoid recreation of objects during recomposition of
GenericStyle. - Expose
LineJoin.NONEwhich in conjunction with e.g.linePatternimage allows to display repeated series of images along a line (e.g. dotted route line). - Expose new function
DefaultLocationProvider.locationAnimatorOptionsto allow changing the value animator properties for puck position animation. - Deprecate
MapboxMap.cameraForCoordinatessuspending extension function in favour of suspendMapboxMap.awaitCameraForCoordinates. - Add min/max/default values to the docs for the generated properties.
- Add asynchronous
TileStore.create().clearAmbientCache()API that can be used for clearing all ambient cache data. - Expose experimental
lineZOffsetandlineOcclusionOpacityforLineLayer. - Expose experimental
modelFrontCutoffforModelLayer. - Expose experimental
iconOcclusionOpacityandtextOcclusionOpacityforSymbolLayerandPointAnnotationManager. - Expose experimental
lineOcclusionOpacityforPolylineAnnotationManager. - Expose experimental
lineZOffsetforPolylineAnnotationandPolylineAnnotationOptions. - Expose
clusterMinPointsproperty forGeoJSONSourceand for annotation'sClusterOptions. - Remove explicit main thread locking when using
CircleAnnotationManager,PointAnnotationManager,PolygonAnnotationManager,PolylineAnnotationManagerand dragging the map that could lead to an ANR. - Use dedicated thread for the tile store to increase performance.
- [compose] Expose
TerrainStateandAtmosphereStateproperties asMutableState.
Bug fixes 🐞
- [compose] Fix the layer and annotation ordering by moving the annotations/layers according to the relative position in the node tree.
- [compose] Fix
No enum constant com.mapbox.maps.GeoJSONSourceDatacrash when restoring app from background. - Fix transitioning to
OverviewViewportStatein corner cases when the map is not yet ready for rendering(e.g. immediately afterMapViewis created). - Set default minimum displacement between location updates to 0.1 meters in
DefaultLocationProvider. Now this value is the same regardless of application using Google Play Services location library or not. - Fix
PointAnnotationManagerandCircleAnnotationManagercluster layer id collision issue, so that multiple clusters can work at the same time. - Fix
RasterParticleLayer.rasterParticleCountandRasterParticleLayer.defaultRasterParticleCountreturningnull. - Fix an issue allowing view annotation to be added even if its associated layer does not exist. Now, view annotation will function correctly once the layer is added.
- Fix feature queries for symbols above the horizon.
- Fix the rotated icon position during the globe transition.
- Fix Dynamic View Annotation (DVA) placement to place DVA in the center of the line geometry point, and try to avoid placing DVA near the lines' intersection point.
- Reduce the max raster-particle animation speed. It prevents particles from moving too fast, causing a visible clipping artifact at tile boundaries.
Snapshottermethods throwSnapshotterDestroyedExceptionifdestroywas already called.- Fix precision issues in
ColorUtilsmethods. - Fix NPE when parsing
rgb(...)strings withColorUtilsmethods. - Fix
ScaleBar.useContinuousRenderingnot being in sync withScaleBar.settings.useContinuousRendering. - Fix accuracy ring related location settings updates not being rendered immediately.
- Fix a crash for Draco compressed 3D models whose geometry share indices.
- Fix tile rendering errors when the composited source tile components are overscaled.
- Fix transparent areas in overlapped polygons of MultiPolygon feature.
- Fix crash on multiple style pack loading operations.
Dependencies
- Update gl-native to v11.5.1 and common to v24.5.0.
11.5.0-rc.1 June 20, 2024
Breaking changes ⚠️
- [compose] Make
MapboxMap.onMapClickListenerandMapboxMap.onMapLongClickListenernullable and default tonull. - [compose] Rename
ImportConfigtoImportConfigs. - [compose] Move
MapboxMap.mapEventsto events flows inMapState. - [compose] Move
MapboxMap.gesturesSettingstoMapState. - Remove experimental
CustomRasterSource.invalidateRegionandCustomRasterSource.invalidateTilemethods and change signature ofCustomRasterSource.setTileData. - Remove experimental
CustomRasterSource.tileCacheBudgetgetter and setter. If needed, caching should be implemented on user's side. - Remove experimental
MapboxMapandStylemethods:invalidateStyleCustomRasterSourceTile,invalidateStyleCustomRasterSourceRegion; change signature ofsetStyleCustomRasterSourceTileDatamethod inMapboxMapandStyle.
Features ✨ and improvements 🏁
- [compose] Introduce
StyleImportcomposable API to be used in theGenericStyle,MapStyleandMapboxStandardStyle. - [compose] Introduce
MapStatethat can be hoisted to interact with map states, such as query rendered features, subscribe to map events and configure gestures settings. - Deprecate
MapboxMap.cameraForCoordinatessuspending extension function in favour of suspendMapboxMap.awaitCameraForCoordinates. - Add min/max/default values to the docs for the generated properties.
- Add asynchronous
TileStore.create().clearAmbientCache()API that can be used for clearing all ambient cache data. - Expose experimental
lineZOffsetandlineOcclusionOpacityforLineLayer. - Expose experimental
modelFrontCutoffforModelLayer. - Expose experimental
iconOcclusionOpacityandtextOcclusionOpacityforSymbolLayerandPointAnnotationManager. - Expose experimental
lineOcclusionOpacityforPolylineAnnotationManager. - Expose experimental
lineZOffsetforPolylineAnnotationandPolylineAnnotationOptions.
Bug fixes 🐞
- Fix
RasterParticleLayer.rasterParticleCountandRasterParticleLayer.defaultRasterParticleCountreturningnull. - Fix the rotated icon position during the globe transition.
- Fix Dynamic View Annotation (DVA) placement to place DVA in the center of the line geometry point, and try to avoid placing DVA near the lines' intersection point.
- Reduce the max raster-particle animation speed. It prevents particles from moving too fast, causing a visible clipping artifact at tile boundaries.
Dependencies
- Update gl-native to v11.5.0-rc.1 and common to v24.5.0-rc.1.
11.5.0-beta.1 June 11, 2024
Breaking changes ⚠️
- [compose] Move
Projectiontogeneratedpackage and renamedefaultvalues toDEFAULT. - [compose] Rename
LightPresettoLightPresetValue. - [compose] Rename
TerrainState.disabledtoTerrainState.DISABLED. - [compose] Replace terrain property
ExaggerationwithDoubleValue. - [compose] Replace concrete
AtmosphereStateproperties (e.g.HighColor,HorizonBlend,SpaceColor, etc) with generic ones:ColorValue,DoubleValue,DoubleRangeValue. - [compose] Replace concrete Layer properties(e.g.
CircleColor,CircleOpacity,IconImageetc) with generic ones:ColorValue,DoubleValue,ImageValueetc. - [compose] Replace concrete
GeoJsonSourceState,ImageSourceState,RasterArraySourceState,RasterDemSourceState,RasterSourceState,SourceProperties,VectorSourceStateproperties with generic ones (e.g.BooleanValue,StringValue,LongValue...). - [compose] Move
GeoJSONDataoutside ofgeneratedpackage.
Features ✨ and improvements 🏁
- Expose
clusterMinPointsproperty forGeoJSONSourceand for annotation'sClusterOptions. - Remove explicit main thread locking when using
CircleAnnotationManager,PointAnnotationManager,PolygonAnnotationManager,PolylineAnnotationManagerand dragging the map that could lead to an ANR. - Use dedicated thread for the tile store to increase performance.
- [compose] Expose
TerrainStateandAtmosphereStateproperties asMutableState. - [compose] Introduce
AmbientLightState,DirectionalLightState,FlatLightStateas separate states;LightsStatecan be constructed by combination ofDirectionalLightStateandAmbientLightStateor withFlatLightStateto be set to the style. - [compose] Avoid recreation of objects during recomposition of
GenericStyle. - Expose
TerrainStateandAtmosphereStateproperties asMutableState.
Bug fixes 🐞
- [compose] Fix
No enum constant com.mapbox.maps.GeoJSONSourceDatacrash when restoring app from background. Snapshottermethods throwSnapshotterDestroyedExceptionifdestroywas already called.- Fix precision issues in
ColorUtilsmethods. - Fix NPE when parsing
rgb(...)strings withColorUtilsmethods. - Fix
ScaleBar.useContinuousRenderingnot being in sync withScaleBar.settings.useContinuousRendering. - Fix accuracy ring related location settings updates not being rendered immediately.
- Fix a crash for Draco compressed 3D models whose geometry share indices.
- Fix tile rendering errors when the composited source tile components are overscaled.
- Fix transparent areas in overlapped polygons of MultiPolygon feature.
- Fix crash on multiple style pack loading operations.
Dependencies
- Update gl-native to v11.5.0-beta.1 and common to v24.5.0-beta.4.
11.4.1 June 03, 2024
Bug fixes 🐞
- Fix an issue that
getLightAPI always returns null.
11.4.0 May 22, 2024
Breaking changes ⚠️
- [compose] Remove
locationComponentSettingsfromMapboxMapcomposable function,MapEffectwith location component API should be used instead. More compose-friendly location component API will be introduced in future releases. - [compose] Remove
TileCacheBudget(com.mapbox.maps.TileCacheBudget)constructor and introduceTileCacheBudget(TileCacheBudgetInMegabytes)andTileCacheBudget(TileCacheBudgetInTiles)constructor instead. - [compose] Remove
layoutParamsfromViewAnnotationcomposable function, the internalComposeViewwrapping theViewAnnotation.contentwill always useWRAP_CONTENT; In case of tests where the assertion happens before the measure, user can force the content size usingViewAnnotationOptions.width/heightAPIs. - [compose] Constructor in
PromoteIddata class from compose now takesPropertyNameand optionalSourceIdinstead of itself. - [compose] Use new
SlotsContentinstead of genericMapto handle the style content for slots. IntroducedslotsContentbuilder function. - [compose] Use new
LayerPositionedContentinstead of genericMapto handle the layer positioned style content. IntroducedlayerPositionedContentbuilder function. - [compose] Use new
StyleImportsConfiginstead of genericMapto handle the style import configurations. IntroducedstyleImportsConfigbuilder function. - [compose] Move
MapboxStandardStyleto a different package and introduceLightPresetwith available presets as constants. - [compose]
MapViewportStatepropertiescameraState,mapViewportStatusChangedReasonandmapViewportStatusare null when the state is not attached to a map. - [compose]
MapViewportStateconstructor parameter has been renamed toinitialCameraState.
Features ✨ and improvements 🏁
- [compose] Add
AtmosphereStateparameter toGenericStylecomposable function. - [compose] Introduce
ProjectionandAtmosphereStateAPI onMapStyleandMapboxStandardStyle. - [compose] Add
StyleImageto construct following image layer properties:IconImage,FillPattern,LinePattern,BearingImage,ShadowImage,TopImage. - [compose] Add
ModelIdconstructor to add model id and uri. - [compose] Add
TerrainStateparameter toGenericStyle,MapStyleandMapboxStandardStylecomposable functions. - Introduce
addStyleImportFromJSON,addStyleImportFromURI,updateStyleImportWithJSON,updateStyleImportWithURI,moveStyleImportAPIs toMapboxMapandStyle. - Handle updating geo-json data exceptions and propagate them to
MapboxMap.subscribeMapLoadingError(mapLoadingErrorCallback). - Introduce
SlotLayerin Style DSL. - Add statistics for graphics pipeline program creation.
- Enable
raster-elevationfor tiled raster sources. - Improve tile processing performance by filtering out tiny polygon holes.
- Reduce number of evaluations of step expression in
line-gradientproperties. - Add support for
line-trim-offsetwithline-pattern. - Enable two dimensional data handling in Mapbox Raster tiles.
- Trim zoom ranges for the style at tileset descriptor resolving.
- Extend
SymbolLayer.iconColorSaturationrange from [0, 1] to [-1, 1] and change default value to 0. - Reduce time spent on model layer re-evaluation during light change.
- Expose experimental
Style.styleSlotsallowing to get the ordered list of slots. - Deprecate
MapboxMap.cameraForCoordinateBounds,MapboxMap.cameraForGeometryand some synchronous overloadedMapboxMap.cameraForCoordinatesin favour of single synchronous, asynchronous and suspendMapboxMap.cameraForCoordinates. SynchronousMapboxMap.cameraForCoordinatesreturns empty camera (could be checked withCameraOptions.isEmpty) if the map's size is not yet calculated. - Add feature metrics collection. Mapbox Maps SDK collects anonymous data about which of its features are used. Mapbox uses this data to understand how our software is being used and prioritize plans to improve it. These metrics tell us whether a feature has been used ("flyTo was called"), but not how ("flyTo was called with this position"). No user-level metrics or identifiers are collected as part of this initiative.
- Avoid locking main thread when it is not needed on map destroy.
- Add experimental
MapView.setSnapshotLegacyModefunction to help avoidingMapView.snapshotnative crash on some Samsung devices running Android 14. - Add experimental
RasterParticleLayerin Style DSL and Compose. - Add
mapView.location.slotAPI to assign a slot for the location indicator.
Bug fixes 🐞
- [compose] Fix an issue with
rememberGeoJsonSourceState, where theValueandGeoJsonDatacan not be serialised. - [compose] Remember default
ComposeMapInitOptionsandGesturesSettingsso that we don't reconstruct these classes whenMapboxMaprecomposes. - [compose] Filter relevant events for
ViewAnnotation.onUpdatedListenerand skip events from other view annotations. - [compose] Do not consume tap event for
Compass, so that user setclickablecan be processed. - [compose] Fix slots and layerposition content not being cleaned up during recomposition.
- [compose] Propagate onRemoved and onClear to children nodes of MapStyleNode to do proper clean up.
- [compose] Fix lost style import config during style switch by waiting for style load event.
- [compose] Make the initial compass visibility to be false, so the compass wouldn't show and hide initially if the user is facing north.
- [compose] Fix
java.io.NotSerializableException: com.mapbox.bindgen.Valuefor SourceState. - [compose] Queue viewport operations when the
MapViewportStateis no yet attached to the map, to avoid losing events. - Fix
Snapshotter.cameraForCoordinatesargumentspadding,bearingandpitchto be nullable. - Fix config with format expression that contains text property overrides.
- Make non-vector tile parsing cancellable.
- Move cutoff opacity calculation to CPU side.
- Fix icon/pattern missing issue if the missing image is only added after map gets rendered.
- Introduce a dedicated thread for 3d landmarks parsing.
- Fix crash on start when no free disk space left.
- Fix TilePrefetch for GeoJSON sources.
- Fix snapshotter latency when 3d tiles involved.
- Fix renderer destruction being blocked by 3d models parsing completion.
- Fix memory leak when camera animations are skipped.
- Fix Mapbox attribution and telemetry links not opening in a browser.
- Fix incorrect size of the tile memory budget for vector tiles when the budget is set in megabytes.
- Fix
LogoView.logoEnablednot being in sync withMapView.logo.enabledstate. - Fix raster-particle not being visible on some Android devices.
- Fixed invalid circle order while using
circle-sort-key. - Fixed duplicate circles in static viewport mode.
- Fixed a crash during style change.
Dependencies
- Update gl-native to v11.4.0 and common to v24.4.0.
11.4.0-rc.2 May 15, 2024
Breaking changes ⚠️
- [compose]
MapViewportStatepropertiescameraState,mapViewportStatusChangedReasonandmapViewportStatusare null when the state is not attached to a map. - [compose]
MapViewportStateconstructor parameter has been renamed toinitialCameraState.
Bug fixes 🐞
- [compose] Queue viewport operations when the
MapViewportStateis no yet attached to the map, to avoid losing events. - Fix
LogoView.logoEnablednot being in sync withMapView.logo.enabledstate. - Fix raster-particle not being visible on some Android devices.
Dependencies
- Update gl-native to v11.4.0-rc.2 and common to v24.4.0-rc.2.
11.4.0-rc.1 May 08, 2024
Features ✨ and improvements 🏁
- [compose] Add
StyleImageto construct following image layer properties:IconImage,FillPattern,LinePattern,BearingImage,ShadowImage,TopImage. - [compose] Add
ModelIdconstructor to add model id and uri. - [compose] Add
TerrainStateparameter toGenericStyle,MapStyleandMapboxStandardStylecomposable functions. - Add experimental
RasterParticleLayerin Style DSL and Compose. - Add
mapView.location.slotAPI to assign a slot for the location indicator.
Bug fixes 🐞
- Fix memory leak when camera animations are skipped.
- Fix Mapbox attribution and telemetry links not opening in a browser.
- Fix incorrect size of the tile memory budget for vector tiles when the budget is set in megabytes.
- Fix known issue from 11.4.0-beta.1 where setting a RasterLayer’s rasterColor property with an expression will block the layer from rendering.
Dependencies
- Update gl-native to v11.4.0-rc.1 and common to v24.4.0-rc.1.
11.4.0-beta.3 May 06, 2024
Features ✨ and improvements 🏁
- Add experimental
MapView.setSnapshotLegacyModefunction to help avoidingMapView.snapshotnative crash on some Samsung devices running Android 14.
Bug fixes 🐞
- [compose] Make the initial compass visibility to be false, so the compass wouldn't show and hide initially if the user is facing north.
- [compose] Fix
java.io.NotSerializableException: com.mapbox.bindgen.Valuefor SourceState.
Dependencies
- Update common to v24.4.0-beta.3.
11.4.0-beta.2 April 30, 2024
Features ✨ and improvements 🏁
- Avoid locking main thread when it is not needed on map destroy.
Bug fixes 🐞
- Fix TilePrefetch for GeoJSON sources.
- Fix snapshotter latency when 3d tiles involved.
- Fix renderer destruction being blocked by 3d models parsing completion.
Dependencies
- Update gl-native to v11.4.0-beta.2 and common to v24.4.0-beta.2.
11.4.0-beta.1 April 29, 2024
Breaking changes ⚠️
- [compose] Remove
locationComponentSettingsfromMapboxMapcomposable function,MapEffectwith location component API should be used instead. More compose-friendly location component API will be introduced in future releases. - [compose] Remove
TileCacheBudget(com.mapbox.maps.TileCacheBudget)constructor and introduceTileCacheBudget(TileCacheBudgetInMegabytes)andTileCacheBudget(TileCacheBudgetInTiles)constructor instead. - [compose] Remove
layoutParamsfromViewAnnotationcomposable function, the internalComposeViewwrapping theViewAnnotation.contentwill always useWRAP_CONTENT; In case of tests where the assertion happens before the measure, user can force the content size usingViewAnnotationOptions.width/heightAPIs. - [compose] Constructor in
PromoteIddata class from compose now takesPropertyNameand optionalSourceIdinstead of itself. - [compose] Use new
SlotsContentinstead of genericMapto handle the style content for slots. IntroducedslotsContentbuilder function. - [compose] Use new
LayerPositionedContentinstead of genericMapto handle the layer positioned style content. IntroducedlayerPositionedContentbuilder function. - [compose] Use new
StyleImportsConfiginstead of genericMapto handle the style import configurations. IntroducedstyleImportsConfigbuilder function. - [compose] Move
MapboxStandardStyleto a different package and introduceLightPresetwith available presets as constants.
Features ✨ and improvements 🏁
- [compose] Add
AtmosphereStateparameter toGenericStylecomposable function. - [compose] Introduce
ProjectionandAtmosphereStateAPI onMapStyleandMapboxStandardStyle. - Introduce
addStyleImportFromJSON,addStyleImportFromURI,updateStyleImportWithJSON,updateStyleImportWithURI,moveStyleImportAPIs toMapboxMapandStyle. - Handle updating geo-json data exceptions and propagate them to
MapboxMap.subscribeMapLoadingError(mapLoadingErrorCallback). - Introduce
SlotLayerin Style DSL. - Add statistics for graphics pipeline program creation.
- Enable
raster-elevationfor tiled raster sources. - Improve tile processing performance by filtering out tiny polygon holes.
- Reduce number of evaluations of step expression in
line-gradientproperties. - Add support for
line-trim-offsetwithline-pattern. - Enable two dimensional data handling in Mapbox Raster tiles.
- Trim zoom ranges for the style at tileset descriptor resolving.
- Extend
SymbolLayer.iconColorSaturationrange from [0, 1] to [-1, 1] and change default value to 0. - Reduce time spent on model layer re-evaluation during light change.
- Expose experimental
Style.styleSlotsallowing to get the ordered list of slots. - Deprecate
MapboxMap.cameraForCoordinateBounds,MapboxMap.cameraForGeometryand some synchronous overloadedMapboxMap.cameraForCoordinatesin favour of single synchronous, asynchronous and suspendMapboxMap.cameraForCoordinates. SynchronousMapboxMap.cameraForCoordinatesreturns empty camera (could be checked withCameraOptions.isEmpty) if the map's size is not yet calculated.
Bug fixes 🐞
- [compose] Fix an issue with
rememberGeoJsonSourceState, where theValueandGeoJsonDatacan not be serialised. - [compose] Remember default
ComposeMapInitOptionsandGesturesSettingsso that we don't reconstruct these classes whenMapboxMaprecomposes. - [compose] Filter relevant events for
ViewAnnotation.onUpdatedListenerand skip events from other view annotations. - [compose] Do not consume tap event for
Compass, so that user setclickablecan be processed. - [compose] Fix slots and layerposition content not being cleaned up during recomposition.
- [compose] Propagate onRemoved and onClear to children nodes of MapStyleNode to do proper clean up.
- [compose] Fix lost style import config during style switch by waiting for style load event.
- Fix
Snapshotter.cameraForCoordinatesargumentspadding,bearingandpitchto be nullable. - Fix config with format expression that contains text property overrides.
- Make non-vector tile parsing cancellable.
- Move cutoff opacity calculation to CPU side.
- Fix icon/pattern missing issue if the missing image is only added after map gets rendered.
- Introduce a dedicated thread for 3d landmarks parsing.
- Fix crash on start when no free disk space left.
Dependencies
- Update gl-native to v11.4.0-beta.1 and common to v24.4.0-beta.1.
Known issues
- In v11.4.0-beta.1, setting a RasterLayer’s rasterColor property with an expression will block the layer from rendering. This issue will be resolved in v11.4.0-rc.1.
- In v11.4.0-beta.1, the map destroy might block main thread for short amount of time and cause UI to freeze. This issue will be resolved in v11.4.0-beta.2.
11.3.1 April 26, 2024
Features ✨ and improvements 🏁
- Reduce time spent on model layer re-evaluation during light change.
Bug fixes 🐞
- Make non-vector tile parsing cancellable.
- Introduce a dedicated thread for 3d landmarks parsing.
- Fix TilePrefetch for GeoJSON sources.
Dependencies
- Update gl-native to v11.3.2.
11.3.0 April 11, 2024
Breaking changes ⚠️
- [compose] Introduce experimental
ComposeMapInitOptionsand removemapInitOptionsFactory. - [compose] Replace experimental
MapboxMap.compassSettings,MapboxMap.scaleBarSettings,MapboxMap.logoSettings,MapboxMap.attributionSettingswith composable functions in dedicated scopes:MapCompassScope.Compass(),MapScaleBarScope.ScaleBar(),MapLogoScope.Logo(),MapAttributionScope.Attribution().
Features ✨ and improvements 🏁
- [compose] Add layerPosition support in
GenericStylecomposable function. - [compose] Add layer transition properties.
- [compose] Add
contentPaddingto map ornament composable functions(e.g.Compass,Logo,Attribution,ScaleBar). - [compose] Introduce experimental
MapStyle,MapboxStandardStyle,GenericStylecomposable functions to work with the map style. - [compose] Introduce experimental layer composable functions to insert layers to the map.
- [compose] Introduce experimental source states to work with layer composable functions.
- [compose] Add map projection support in
GenericStylecomposable function. - Expose
MapInitOptions.mapName(mapbox_mapNamein XML) property allowing to set the custom name which will be appended to map render related logs. - Add Attribution and Telemetry pop-up dialogs and compass view content description translations for Arabic, Bulgarian, Catalan, Chinese Simplified, Chinese Traditional, Czech, Danish, Dutch, French, Galician, German, Hebrew, Italian, Japanese, Korean, Lithuanian, Norwegian, Polish, Belarusian, Russian, Spanish, Swedish, Ukranian and Vietnamese.
- Perform faster landmark parsing by switching tinygltf in favor of cgltf.
- Use mipmap with pattern images.
- Add
SdkInformationQueryto expose sdk version information. - Enable
TileStoredelta updates by default for Maps domain. - Add
TileStore.estimateTileRegionAPI for estimating Tile Region downloads and storage size.
Bug fixes 🐞
- [compose] Fix a bug introduced in
11.3.0-beta.1where AnnotationGroup items updates were skipped. - [compose] Fix
ViewAnnotationnot cleared when it leaves composition. - [compose] Fix the
IndexOutOfBoundsExceptionbecause ofRootNodeofMapboxMapnode tree being shared across multiple maps. - Resolve the data race by ensuring that when terrain is enabled, the transform state is updated with the correct elevation instance.
- Fix offline composited tiles fetching when the request tile zoom level is above maximum zoom for one of the composed tile packs but below maximum zoom level for another one.
- Fix override of line-gradient textures when fill-extrusion effects are used on terrain.
- Return
ViewAnnotationOptions.Builderwhen callingViewAnnotationOptions.Builder.annotationAnchorextension function. - Immediately add annotations and location component to the map instead of waiting for style load events.
- Fix a bug where specifying a large negative value for padding in
MapboxMap.camera*()methods resulted in the returned zoom value being NaN. - Fix location indicator models rendering issue with globe projection.
- Offline: composite higher level tiles from their parents, when a non-standard tile pack zoom ranges scheme is used.
- Use bigger http buffers to avoid reference table overflow.
- Fix attribution links not opening in some scenarios.
- Fix attribution and telemetry dialogs not respecting current theme.
- Fix map being pixelated on some devices when
ContextMode.SHAREDis used (e.g. in AndroidAuto extension). - Fix map being black on some zoom levels when
ContextMode.SHAREDis used (e.g. in AndroidAuto extension). - Fix incorrect widget position and scale when resizing the drawing surface.
- Fix layer paint property update with feature state changes, especially if the paint property value data-driven by brightness or zoom.
- Fix snapshotter race conditions to ensure new request could effectively trigger map rendering.
- Fix raster array band updates glitches during the camera zoom animation.
- Reload vector source tiles when language or worldview setting is changed.
- Apply config expression to atmosphere properties.
- Fix map freezing when using
queryRenderedFeatureswith 3d models in mercator projection. - Reduce time spent on line gradient updates on the render thread.
- Fix network reachability status getting stuck with ReachableViaWWAN status if HTTP requests completed at the same time as network reported being disconnected.
- Fix wrong network reachability statuses.
- Fix double
LocationServiceObserver.onAvailabilityChangedcallback trigger. - Avoid bringing Kotlin 1.8 as transitive dependency, Maps SDK should use Kotlin 1.7.20.
Dependencies
- Update gl-native to v11.3.0 and common to v24.3.1.
- Update Mapbox Base Android library to v0.11.0.
11.3.0-rc.1 March 28, 2024
Known Issues ⚠️
- The tiles fetching from the offline database is malfunctioning for the composited sources. Setting
com.mapbox.maps.experimental.offline_vt_compositingruntime flag tofalseresolves this issue:
val settings = SettingsServiceFactory.getInstance(SettingsServiceStorageType.NON_PERSISTENT)
settings.set("com.mapbox.maps.experimental.offline_vt_compositing", Value.valueOf(false))
Features ✨ and improvements 🏁
- [compose] Add layerPosition support in
GenericStylecomposable function. - Expose
MapInitOptions.mapName(mapbox_mapNamein XML) property allowing to set the custom name which will be appended to map render related logs. - [compose] Add layer transition properties.
- [compose] Add
contentPaddingto map ornament composable functions(e.g.Compass,Logo,Attribution,ScaleBar).
Bug fixes 🐞
- Return
ViewAnnotationOptions.Builderwhen callingViewAnnotationOptions.Builder.annotationAnchorextension function. - [compose] Fix the
IndexOutOfBoundsExceptionbecause ofRootNodeofMapboxMapnode tree being shared across multiple maps. - Immediately add annotations and location component to the map instead of waiting for style load events.
- Fix a bug where specifying a large negative value for padding in
MapboxMap.camera*()methods resulted in the returned zoom value being NaN. - Fix location indicator models rendering issue with globe projection.
- Offline: composite higher level tiles from their parents, when a non-standard tile pack zoom ranges scheme is used.
- Use bigger http buffers to avoid reference table overflow.
- Fix a crash in
MapView.snapshothappening on specific devices.
Dependencies
- Update gl-native to v11.3.0-rc.1 and common to v24.3.0-rc.1.
11.2.2 March 27, 2024
Features ✨ and improvements 🏁
- Expose
MapInitOptions.mapName(mapbox_mapNamein XML) property allowing to set the custom name which will be appended to map render related logs.
Dependencies
- Update gl-native to v11.2.2 and common to v24.2.3.
11.2.1 March 15, 2024
Bug fixes 🐞
- Apply config expression to atmosphere properties.
- Fix map freezing when using
queryRenderedFeatureswith 3d models in mercator projection.
Dependencies
- Update gl-native to v11.2.1.
11.3.0-beta.1 March 14, 2024
Breaking changes ⚠️
- [compose] Replace experimental
MapboxMap.compassSettings,MapboxMap.scaleBarSettings,MapboxMap.logoSettings,MapboxMap.attributionSettingswith composable functions in dedicated scopes:MapCompassScope.Compass(),MapScaleBarScope.ScaleBar(),MapLogoScope.Logo(),MapAttributionScope.Attribution().
Features ✨ and improvements 🏁
- Added Attribution and Telemetry pop-up dialogs and compass view content description translations for Arabic, Bulgarian, Catalan, Chinese Simplified, Chinese Traditional, Czech, Danish, Dutch, French, Galician, German, Hebrew, Italian, Japanese, Korean, Lithuanian, Norwegian, Polish, Belarusian, Russian, Spanish, Swedish, Ukranian and Vietnamese.
- Faster landmark parsing by switching tinygltf in favor of cgltf.
- Use mipmap with pattern images .
- Add
SdkInformationQueryto expose sdk version information. - Enable
TileStoredelta updates by default for Maps domain. - Add
TileStore.estimateTileRegionAPI for estimating Tile Region downloads and storage size. - [compose] Introduce experimental
MapStyle,MapboxStandardStyle,GenericStylecomposable functions to work with the map style. - [compose] Added experimental layer and source composable functions to insert layer/sources to the map.
- [compose] Improve annotation group update speed.
Bug fixes 🐞
- [compose] Fix
ViewAnnotationnot cleared when it leaves composition. - Fix attribution links not opening in some scenarios.
- Fix attribution and telemetry dialogs not respecting current theme.
- Fix map being pixelated on some devices when
ContextMode.SHAREDis used (e.g. in AndroidAuto extension). - Fix incorrect widget position and scale when resizing the drawing surface.
- Fix layer paint property update with feature state changes, especially if the paint property value data-driven by brightness or zoom.
- Fix snapshotter race conditions to ensure new request could effectively trigger map rendering.
- Fix raster array band updates glitches during the camera zoom animation.
- Reload vector source tiles when language or worldview setting is changed.
- Apply config expression to atmosphere properties.
- Fix map freezing when using
queryRenderedFeatureswith 3d models in mercator projection. - Reduce time spent on line gradient updates on the render thread.
- Fix network reachability status getting stuck with ReachableViaWWAN status if HTTP requests completed at the same time as network reported being disconnected.
- Fix wrong network reachability statuses.
- Fix double
LocationServiceObserver.onAvailabilityChangedcallback trigger. - Avoid bringing Kotlin 1.8 as transitive dependency, Maps SDK should use Kotlin 1.7.20.
Dependencies
- Update gl-native to v11.3.0-beta.1 and common to v24.3.0-beta.1.
11.2.0 February 29, 2024
Features ✨ and improvements 🏁
- Introduce better way of SDK initialization to avoid
java.lang.UnsatisfiedLinkErrorexception on process startup. If the native library is still not found when actual Mapbox API is called, meaningfulMapboxInitializerExceptionis thrown and could be caught and processed on user's side. - Introduce
MapboxMap.getCenterAltitudeModeAPI. - Add
useShortestPathoption toCameraAnimationPlugin.createCenterAnimator, when enabled, shortest path will be applied when the start and end camera center is across the antimeridian, for example from -170 to 170 longitude. Defaults to true. - Introduce
SymbolLayer.iconColorSaturationAPI. - Introduce experimental
RasterLayer.rasterElevationAPI. - Introduce experimental
MapboxMap.startPerformanceStatisticsCollection/MapboxMap.stopPerformanceStatisticsCollectionAPIs allowing to start / stop collecting map rendering performance statistics. - Introduce
GeoJsonSource.tileCacheBudget,RasterSource.tileCacheBudget,RasterDemSource.tileCacheBudget,RasterArraySource.tileCacheBudget,VectorSource.tileCacheBudget,CustomGeometrySource.tileCacheBudget,CustomRasterSource.tileCacheBudget. - Skip unneeded layers properties re-evaluation on zoom change.
- Add the possibility to use constant expressions for
model-emissive-strengthwhen rendering 3D model layers using 2D sources. - Introduce static
HttpServiceFactory.setMaxRequestsPerHostAPI. TileStoreOptions.DiskQuotais now an abort threshold for tilestore size. When we have more than this amount of bytes stored, new downloads will fail.Tilestorestarts to evict tiles with closest expiration date 50Mb (or 10% of DiskQuota, whatever is smaller) before this abort threshold is reached.- Speedup preparing tiled sources for rendering.
- Uploading model resources to GPU in continuous map mode is now limited by fixed time per frame.
- Modify
FillExtrusionLayer.fillExtrusionCutoffFadeRangeto scale down and remove buildings in a staggered fashion, instead of fading opacity. - [compose] Introduce
DisposableMapEffectAPI. - [compose] Add default value for
MapViewportState.transitionToFollowPuckState.followPuckViewportStateOptions.
Bug fixes 🐞
- Retain previous
CenterAltitudeModeafter gestures are finished. - Avoid marking whole
LayerDslas experimental when only a part of the layer properties are experimental. - Fix R8 error due to missing class
com.tobrun.datacompat.annotation.Default. EaseToandMoveBycamera animation andDefaultViewportTransitionnow will use shortest path when the start and end camera center is across the antimeridian, for example from -170 to 170 longitude.- Remove extra image padding from text shaping offset.
- Address crashes on certain Android devices by disabling the texture pool.
- Fix elevated rasters with coordinates not aligned to the longitude/latitude grid.
- Fix a bug that was causing absence of
MapLoadedevent and never ending background task processing. - Fix a bug that heatmap layer wasn't updating visuals after feature state change.
- Fix a bug where scientific notation is not supported when parse JSON numbers to
Value. - Fix a crash occurring when clicking on the "Telemetry settings" option in the attribution dialog when not using the
AppCompattheme. - Fix
ModelLayer.modelCutoffFadeRangecalculation on low zoom levels. - Fix
RasterArrayrendering on Android. - Fix rare null pointer dereference crash.
- Fix a bug with disappearing models during light changes.
- Fix rendering artifacts on long fill outlines on pitched map view.
- Fix style parsing when the style and import's urls are both empty.
- Fix config expression evaluation if the expected type is formatted but the actual value is string.
- Fix not taking
line-trim-offsetinto account for Dynamic View Annotation placement. - Fix issue that View Annotation stays visible when the associated layer's visibility is none.
- Fix camera framing on globe with padding.
- [compose] Fix a warning that using UI composable where Mapbox Map composable is expected.
- [compose] Fix losing some location component settings during wrapping.
Dependencies
- Update gl-native to v11.2.0 and common to v24.2.0.
- Upgrade to Kotlin Data compat v0.8.0.
11.2.0-rc.1 February 15, 2024
Features ✨ and improvements 🏁
- [compose] Introduce
DisposableMapEffectAPI. - Speedup preparing tiled sources for rendering.
- Uploading model resources to GPU in continuous map mode is now limited by fixed time per frame.
- Modify
FillExtrusionLayer.fillExtrusionCutoffFadeRangeto scale down and remove buildings in a staggered fashion, instead of fading opacity.
Bug fixes 🐞
- [compose] Fix a warning that using UI composable where Mapbox Map composable is expected.
- Fix a crash occurring when clicking on the "Telemetry settings" option in the attribution dialog when not using the
AppCompattheme. - Fix
ModelLayer.modelCutoffFadeRangecalculation on low zoom levels. - Fix
RasterArrayrendering on Android. - Fix rare null pointer dereference crash.
Dependencies
- Update gl-native to v11.2.0-rc.1 and common to v24.2.0-rc.2.
11.2.0-beta.1 February 01, 2024
Features ✨ and improvements 🏁
- Introduce better way of SDK initialization to avoid
java.lang.UnsatisfiedLinkErrorexception on process startup. If the native library is still not found when actual Mapbox API is called, meaningfulMapboxInitializerExceptionis thrown and could be caught and processed on user's side. - Introduce
MapboxMap.getCenterAltitudeModeAPI. - Add
useShortestPathoption toCameraAnimationPlugin.createCenterAnimator, when enabled, shortest path will be applied when the start and end camera center is across the antimeridian, for example from -170 to 170 longitude. Defaults to true. - Introduce
SymbolLayer.iconColorSaturationAPI. - Introduce experimental
RasterLayer.rasterElevationAPI. - Introduce experimental
MapboxMap.startPerformanceStatisticsCollection/MapboxMap.stopPerformanceStatisticsCollectionAPIs allowing to start / stop collecting map rendering performance statistics. - Introduce
GeoJsonSource.tileCacheBudget,RasterSource.tileCacheBudget,RasterDemSource.tileCacheBudget,RasterArraySource.tileCacheBudget,VectorSource.tileCacheBudget,CustomGeometrySource.tileCacheBudget,CustomRasterSource.tileCacheBudget. - Skip unneeded layers properties re-evaluation on zoom change.
- Add the possibility to use constant expressions for
model-emissive-strengthwhen rendering 3D model layers using 2D sources. - Introduce static
HttpServiceFactory.setMaxRequestsPerHostAPI. TileStoreOptions.DiskQuotais now an abort threshold for tilestore size. When we have more than this amount of bytes stored, new downloads will fail.Tilestorestarts to evict tiles with closest expiration date 50Mb (or 10% of DiskQuota, whatever is smaller) before this abort threshold is reached.
Bug fixes 🐞
- Retain previous
CenterAltitudeModeafter gestures are finished. - Avoid marking whole
LayerDslas experimental when only a part of the layer properties are experimental. - Fix R8 error due to missing class
com.tobrun.datacompat.annotation.Default. EaseToandMoveBycamera animation andDefaultViewportTransitionnow will use shortest path when the start and end camera center is across the antimeridian, for example from -170 to 170 longitude.- Remove extra image padding from text shaping offset.
- Address crashes on certain Android devices by disabling the texture pool.
- Fix elevated rasters with coordinates not aligned to the longitude/latitude grid.
- Fix a bug that was causing absence of
MapLoadedevent and never ending background task processing. - Fix a bug that heatmap layer wasn't updating visuals after feature state change.
- Fix a bug where scientific notation is not supported when parse JSON numbers to
Value.
Dependencies
- Upgrade to Kotlin Data compat v0.8.0.
- Update gl-native to v11.2.0-beta.1 and common to v24.2.0-beta.1.
Known issues
With the new way of Mapbox SDK initialization, your application unit tests may start failing when interacting with Mapbox APIs, even if mocked. The error may look like:
Exception java.lang.NoClassDefFoundError: Could not initialize class com.mapbox.common.location.Location
or
Caused by: java.lang.RuntimeException: Method w in android.util.Log not mocked. See https://developer.android.com/r/studio-ui/build/not-mocked for details.
at android.util.Log.w(Log.java)
at com.mapbox.common.BaseMapboxInitializer$Companion.init(BaseMapboxInitializer.kt:116)
at com.mapbox.common.BaseMapboxInitializer.init(BaseMapboxInitializer.kt)
at com.mapbox.common.location.Location.<clinit>(Location.java:442)
To fix above errors, BaseMapboxInitializer should be properly mocked before accessing the failing Mapbox class. For example, when using Kotlin MockK you should add the following code:
mockkObject(BaseMapboxInitializer)
every { BaseMapboxInitializer.init<Any>(any()) } just Runs
// your test code
unmockkObject(BaseMapboxInitializer)
Alternative solution is to apply unitTests.returnDefaultValues.
11.1.0 January 17, 2024
Features ✨ and improvements 🏁
- From v11.1.0, Mapbox Android Auto Extension for Android is released as a separate module following the same release cadence with the main SDK, please refer to this guide to get started with Android Auto, and v0.5.0 changelog for previous changelogs.
- Define minCompileSdkVersion=31 for Maps SDK libraries.
- Introduce
FillExtrusionLayer.fillExtrusionEmissiveStrength,HillshadeLayer.hillshadeEmissiveStrengthandRasterLayer.rasterEmissiveStrengthproperties. - Introduce
RasterLayer.rasterArrayBandproperty. - Improve performance of
StyleInterface.localizeLabelsmethod. - Introduce
RasterArraySourcewith read only propertyRasterArraySource.rasterLayers, which can be used in combination withRasterLayer.sourceLayerandRasterLayer.rasterArrayBand. - Improve error handling for
UnknownNativeException, more specific error message will be thrown instead. - Support landmark tilesets with compressed textures for improved tile load performance.
- Improve performance of changing layers' properties.
Bug fixes 🐞
- Fix
MapSurfacerendering issue when widgets are used. - Fix
coordinateBoundsForCameraUnwrappedreturning wrapped coordinates. - Fix inconsistent behavior in fill-extrusion color when using directional and ambient lights.
- Downloaded but corrupted style is now invalidated and will be downloaded again on the next load.
- Fixed missing tiles in the bottom part of the screen when looking from the mountain down to the valley.
- Do not emit slot missing warnings if style imports are not fully loaded.
- Fixed wrong dem tile selection from elevation snapshots in rare cases.
- Fixed tile flickering with enabled terrain.
- Add missing properties, i.e.
array,values,maxValue,minValue,stepValue,metadatawhen usinggetStyleImportSchemaAPI, if they are present in the original schema. - Exclude duplicated
tileIDinMapboxMap.tileCoverquerying results. - Fix race condition on repeated style transitions, when the transition fails for some layers.
- Allow style schema to control imported fragment configs.
- Fix possible rendering artifacts on startup when
ContextMode.SHAREDis used. - Fix wrong camera positions while using
setBounds. - Fix missing IDs of flat light types when configured through the
setLightsAPI. - Reload image dependent tiles when sprites are loaded.
- Fix an issue where memory use would grow continuously with Z-offset enabled symbol layers.
- Fix crash when using Dynamic View Annotation with location indicator enabled but visibility is turned from visible to none.
- Fix
getStyleSourceProperties()API forRasterArraysource. - Fix unreliable position update of View Annotations.
- Fix GeoJSON partial updates when there is an error during update followed by multiple update calls.
Dependencies
- Update gl-native to v11.1.0 and common to v24.1.0.
11.1.0-rc.1 January 04, 2024
Bug fixes 🐞
- Fix possible rendering artifacts on startup when
ContextMode.SHAREDis used. - Fix regression introduced in v11.1.0-beta.1 where only last added widget was rendered.
- Fix wrong camera positions while using
setBounds. - Fix missing IDs of flat light types when configured through the
setLightsAPI. - Reload image dependent tiles when sprites are loaded.
- Fix an issue where memory use would grow continuously with Z-offset enabled symbol layers.
- Fix crash when using Dynamic View Annotation with location indicator enabled but visibility is turned from visible to none.
- Fix
getStyleSourceProperties()API forRasterArraysource. - Fix unreliable position update of View Annotations.
Dependencies
- Update gl-native to v11.1.0-rc.1 and common to v24.1.0-rc.1.
11.1.0-beta.1 December 19, 2023
Features ✨ and improvements 🏁
- Define minCompileSdkVersion=31 for Maps SDK libraries.
- Introduce
FillExtrusionLayer.fillExtrusionEmissiveStrength,HillshadeLayer.hillshadeEmissiveStrengthandRasterLayer.rasterEmissiveStrengthproperties. - Introduce
RasterLayer.rasterArrayBandproperty. - Improve performance of
StyleInterface.localizeLabelsmethod. - Introduce
RasterArraySourcewith read only propertyRasterArraySource.rasterLayers, which can be used in combination withRasterLayer.sourceLayerandRasterLayer.rasterArrayBand. - Improve error handling for
UnknownNativeException, more specific error message will be thrown instead. - Support landmark tilesets with compressed textures for improved tile load performance.
Bug fixes 🐞
- Fix a
MapSurfacerendering issue when widgets are used. - Fix
coordinateBoundsForCameraUnwrappedreturning wrapped coordinates. - Fix inconsistent behavior in fill-extrusion color when using directional and ambient lights.
- Downloaded but corrupted style is now invalidated and will be downloaded again on the next load.
- Fixed missing tiles in the bottom part of the screen when looking from the mountain down to the valley.
- Do not emit slot missing warnings if style imports are not fully loaded.
- Fixed wrong dem tile selection from elevation snapshots in rare cases.
- Fixed tile flickering with enabled terrain.
- Add missing properties, i.e.
array,values,maxValue,minValue,stepValue,metadatawhen usinggetStyleImportSchemaAPI, if they are present in the original schema. - Exclude duplicated tileID in tileCover querying results.
- Fix race condition on repeated style transitions, when the transition fails for some layers.
- Allow style schema to control imported fragment configs.
Dependencies
- Update gl-native to v11.1.0-beta.1 and common to v24.1.0-beta.2.
11.0.0 November 29, 2023
Breaking changes ⚠️
- Minimum OpenGL ES version is now 3.0.
- Update SDK's
targetSdkVersionandcompileSdkVersionto 33. - Remove deprecated
GeoJsonSourcepublic constructor, builder should be used instead. - Remove deprecated
MapboxMap.queryRenderedFeaturesmethods. - Remove
Snapshotter.setTileMode,Snapshotter.isInTileModemethods. - Remove deprecated
MapStyleStateDelegateandisFullyLoadedmethod. - Remove experimental
setRenderCacheOptions,getRenderCacheOptionsapis. - Add
callbackargument to theMapboxMapmethodsgetFeatureState,setFeatureState,removeFeatureState. - Use different callback types for the
MapboxMap.queryRenderedFeaturesand theMapboxMap.querySourceFeaturesmethods. - Return
cancelablefrom theMapboxMapmethods :getFeatureState,setFeatureState,removeFeatureState,querySourceFeatures,getGeoJsonClusterLeaves,getGeoJsonClusterChildren,getGeoJsonClusterExpansionZoom. - Remove the deprecated
MapboxMap.queryFeatureExtensionsmethod. - Remove
MapAnimationOptions.animatorListenerproperty. In order to subscribe to animations, provideAnimator.animatorListenerwithflyTo,easeTo,pitchBy,scaleBy,moveBy,rotateByapis. - Replace
LocationEngineuse withLocationServiceinDefaultProvider. - Add new
LocationConsumer.onErrormethod to allow consumers handle location errors. - Remove
MapView.location2related interfaces and moveshowAccuracyRing,accuracyRingColor,accuracyRingBorderColor,puckBearingEnabledandpuckBearingSourcetoMapView.location. - Make
AttributionSettings,CompassSettings,GesturesSettings,LocationComponentSettings,LogoSettings,ScaleBarSettingsnot Kotlindata class, better binary compatible and implementingParcelable. - Change
CompassSettings.image,LocationPuck2D.topImage,LocationPuck2D.bearingImage,LocationPuck2D.shadowImagetoImageHolderallowing to pass either drawable id orBitmap. - Remove deprecated
backgroundPatternTransition,lineDasharrayTransition,linePatternTransition,fillPatternTransitionproperties. - Replace
MapSnapshotInterfaceinterface withMapSnapshotResultabstract class and removeimage()method,bitmap()should be used instead. - Change
Annotation.idfrom monotonically increasingLongto UUID represented asString. - Remove
Annotation.featureIdentifierused to connect with View Annotations, nowAnnotation.idshould be used instead. - Rename
PuckBearingSourcetoPuckBearingin location component plugin. - Remove deprecated overloaded
Style.setStyleGeoJSONSourceData(sourceId: String, data: GeoJSONSourceData)method. - Rename
MapboxMap.setMemoryBudgettoMapboxMap.setTileCacheBudgetand make it non-experimental. - Remove
ResourceOptionsandResourceOptionsManager. IntroduceMapboxOptionsandMapboxMapsOptionsto handle application-level access token and other generic options. - Removed XML attributes
mapbox_resourcesAccessTokenandmapbox_resourcesBaseUrl. - Update Mapbox styles to latest versions:
| Style | Before | After |
|---|---|---|
| MAPBOX_STREETS | mapbox://styles/mapbox/streets-v11 | mapbox://styles/mapbox/streets-v12 |
| SATELLITE_STREETS | mapbox://styles/mapbox/satellite-streets-v11 | mapbox://styles/mapbox/satellite-streets-v12 |
| OUTDOORS | mapbox://styles/mapbox/outdoors-v11 | mapbox://styles/mapbox/outdoors-v12 |
| LIGHT | mapbox://styles/mapbox/light-v10 | mapbox://styles/mapbox/light-v11 |
| DARK | mapbox://styles/mapbox/dark-v10 | mapbox://styles/mapbox/dark-v11 |
- Remove native interfaces
StyleManagerInterface,StyleInterface,CameraManagerInterface,MapInterface,ObservableInterfaceand use onlyMapobject to access native methods. - Make map events typed-safe, events are now have their own subscription methods.
Following events are added as typed-safe,
CameraChanged,MapIdle,MapLoadingError,MapLoaded,StyleDataLoaded,StyleLoaded,StyleImageMissing,StyleImageRemovedUnunsed,RenderFrameStarted,RenderFrameFinished,SourceAdded,SourceDataLoaded,SourceRemoved,ReourceRequest. Allsubscribemethods returnCancelableobject, which users could store and callcancelwhen subscription is no longer needed.MapboxMap.unsubscribemethods were removed. - Rename
LocationConsumer.onAccuracyRadiusUpdatedtoonHorizontalAccuracyRadiusUpdated. - Deprecate
MapboxMap.loadStyleUri,MapboxMap.loadStyleJsonandMapboxMap.loadStylemethods and introduce oneMapboxMap.loadStyleaccepting either URI / JSON or Style DSL block. - Replace
com.mapbox.maps.plugin.animation.Cancelablewithcom.mapbox.common.Cancelable. - Remove
TileStoreOptions.MAPBOX_ACCESS_TOKENused e.g. inTileStore.setOption(TileStoreOptions.MAPBOX_ACCESS_TOKEN, someDomain, someValue)as it has become redundant. - Introduce
MapboxTracingobject allowing to enable Android traces to measure performance of the SDK. More details and instructions could be found inWorking with tracessection inDEVELOPING.md. - Remove Mapbox plugin implementations from public API surface.
- Remove
HttpServiceFactory.getInstance,HttpServiceFactory.reset,HttpServiceFactory.setUserDefinedmethods. - Replace
HttpServiceFactory.getInstance().setInterceptorwithHttpServiceFactory.setHttpServiceInterceptor. - Argument
dataIdof theGeoJson.feature,GeoJson.featureCollection,GeoJson.geometry,GeoJson.url,GeoJson.databecame non-nullable. - Remove
Style.getStyleSourcesAttribution.MapboxMap.getAttributionsshould be used instead. - (Kotlin only) Remove
Style.getStyleSources()/Style.getStyleLayers(). PropertiesStyle.styleSources/Style.styleLayersshould be used instead. - Replace style related enum classes with regular classes.
- Migrate from
android.app.AlertDialogtoandroidx.appcompat.app.AlertDialogfor attribution plugin. - Rename
MapboxMap.subscribeStyleImageUnusedtoMapboxMap.subscribeStyleImageRemoveUnused. - The
MapCameraPlugin'sonCameraMovemethod now usesPointfor camera center andEdgeInsetsfor padding. - Remove
MapInitOptions.optimizeForTerrainas whenever terrain is present layer order is automatically adjusted for better performance. - Replace
MapboxMapandMapCameraManagerDelegateAPIsdragStart,dragEnd,getDragCameraOptionswithcameraForDrag,setCenterAltitudeMode. - Remove setter functions for
Style.styleURIandStyle.styleJSONas loading the style should happen only withMapboxMap.loadStyle. - Rename
StyleImageMissing.getStyleImageMissingEventDatatoStyleImageMissing.toStyleImageMissingEventData. - Rename
MapCameraManagerDelegateproperties for methodscameraForCoordinateBounds,cameraForCoordinatesandcameraForGeometryto align them withMapboxMapmethods. - Consolidate
FetchTileFunctionCallbackandCancelTileFunctionCallbackby single typeTileFunctionCallback. - Make
Imageparameter nullable insetStyleCustomRasterSourceTileData()method. - Extension function
Style.getProjection()return type changed fromProjectiontoProjection?. - Extension function
LocationComponentPlugin.createDefault2DPuckinLocationComponentUtils.ktis now stand-alonecreateDefault2DPuck. - Extension function
LocationComponentPlugin.createDefault2DPuckinLocationComponentUtilsis now stand-alonecreateDefault2DPuck. - Function
createDefault2DPuckdoes not require acontextparameter. - Increase minimum location puck bearing threshold needed to trigger an animation to 1 degree (previously 0.01 degrees) to reduce the CPU usage.
- Location component puck bearing enabled property (
MapView.location.puckBearingEanbled) has been changed tofalseby default. ViewAnnotationManager.getViewAnnotationByFeatureIdis renamed toViewAnnotationManager.getViewAnnotation,ViewAnnotationManager.getViewAnnotationByFeatureIdis renamed toViewAnnotationManager.getViewAnnotation.ViewAnnotationManager.getViewAnnotationOptionsByViewis renamed toViewAnnotationManager.getViewAnnotationOptions.ViewAnnotationManager.getViewAnnotationOptionsByFeatureIdis renamed toViewAnnotationManager.getViewAnnotationOptions.ViewAnnotationAnchorConfigfieldsoffsetX/offsetYare now of type Double instead of Int.ViewAnnotationOptionsaccepts list of anchorsvariableAnchorsinstead ofanchor/offsetX/offsetY.ViewAnnotationOptionsfieldswidth/heightare now of type Double instead of Int.OnViewAnnotationUpdatedListener.onViewAnnotationPositionUpdatedargumentswidth/heightare now of type Double instead of Int.- Add
getNamemethod toDeviceLocationProviderinterface. - Add boolean parameter
allowUserDefinedtogetDeviceLocationProvidermethod inLocationServiceinterface. - Add
LocationService.getDeviceLocationProvidermethod that acceptsExtendedLocationProviderParameterstoLocationServiceinterface.
Features ✨ and improvements 🏁
- Introduce new Mapbox 3D style
Style.STANDARDand make it default. - Add dynamic view annotations that can be attached to complex feature geometries and reposition itself based on the current camera viewport. To create dynamic view annotation use
AnnotatedFeatureof typeANNOTATED_LAYER_FEATURE. Multiple dynamic view annotations can be attached to the same feature. Also additional optionsViewAnnotationOptions.allowOverlapWithPuckandViewAnnotationOptions.ignoreCameraPaddingintroduced to configure the dynamic view annotation's behaviour. - The Map Overlay plugin and related APIs have been promoted to stable.
- From v11.0.0-rc.1, Mapbox Compose Extension for Android is released as a separate module following the same release cadence with the main SDK, please refer to this guide to get started with Jetpack Compose, and v0.1.0 changelog for previous changelogs.
- Avoid creating unnecessary objects during animation under some conditions.
- Improve map camera and gestures when terrain is used to fix camera bumpiness and map flickering.
- Use a fallback glyph URL if a style does not define one. This enables the addition of Symbol layers to an empty style or to the style that doesn't use Symbol layers.
- Use ETC2 compression for raster tiles to support transparency.
- Introduce experimental
MapboxMapRecorderallowing to record and replay custom scenarios. - Add Mapbox Privacy Policy to attribution links.
- Add clustering support for
CircleAnnotationManager. - Improve ergonomics of
Snapshotter.startmethod to align with iOS and allow to re-useCanvasfor user drawing. - Add
MapboxMap.coordinateBoundsForRectreturningCoordinateBoundsfor givenRectFof screen coordinates. - Add optional
maxZoomandoffsetparameters toMapboxMap.cameraForCoordinateBounds. - Mark
GeoJsonSource.url/GeoJsonSource.Builder.urlmethods as deprecated,GeoJsonSource.data/GeoJsonSource.Builder.datashould be used instead. - Refactor style Light APIs: introduce
AmbientLight,DirectionalLight,FlatLightand methods to set them to style. - Expose new APIs to import and configure styles:
getStyleImports,removeStyleImport,getStyleImportSchema,getStyleImportConfigProperties,setStyleImportConfigProperties,getStyleImportConfigProperty,setStyleImportConfigProperty - Expose
slotproperty for allLayers to link layers from imported styles. - Add expression support for visibility layer property.
- Add the
MapboxMap.resetFeatureStatemethod. - Make padding optional for
MapboxMap.cameraForCoordinateBounds,MapboxMap.cameraForCoordinates,MapboxMap.cameraForGeometrymethods. - Add
FreeCameraOptions.getLocationandFreeCameraOptions.getAltitudemethods. - Add
MapboxMap.coordinatesForRect(rectF: RectF)to support rectangle parameters. - Add
suspendvariants for the asyncMapboxMapfunctions :queryRenderedFeatures,querySourceFeatures,setFeatureState,getFeatureState,removeFeatureState,getGeoJsonClusterLeaves,getGeoJsonClusterChildren,getGeoJsonClusterExpansionZoom. - Add
MapboxMap.mapLoadedEvents,MapboxMap.mapLoadingErrorEvents,MapboxMap.styleLoadedEvents,MapboxMap.styleDataLoadedEvents,MapboxMap.cameraChangedEvents,MapboxMap.mapIdleEvents,MapboxMap.sourceAddedEvents,MapboxMap.sourceRemovedEvents,MapboxMap.sourceDataLoadedEvents,MapboxMap.styleImageMissingEvents,MapboxMap.styleImageRemoveUnusedEvents,MapboxMap.renderFrameStartedEvents,MapboxMap.renderFrameFinishedEvents,MapboxMap.resourceRequestEventsreturning Flow of events. - Introduce custom lint rules to check illegal usage of literals in Expression DSL and suggest auto fix.
- Introduce custom lint rules to check illegal number of arguments within given Expression DSL.
- Introduce custom lint rules to check unused layer/source/light/terrain/atmosphere/projection objects in the Style DSL, and suggest auto fix to add it to the style using unaryPlus(+) operator.
- Improve performance for
Snapshotterwhen obtaining the bitmap. - Add
ImageSource.updateImage(Bitmap)method. - Introduce Expression overload functions
linearInterpolator,exponentialInterpolator,cubicBezierInterpolator,step,matchandswitchCaseto construct these expressions with strongly typed parameters. - Introduce
ImageExtensionImpl.Builder(imageId, image),ImageExtensionImpl.Builder(imageId, image)constructors and deprecatedImageExtensionImpl.Builder(imageId),ImageExtensionImpl.Builder.image(image),ImageExtensionImpl.Builder.bitmap(bitmap), as image/bitmap is required forImageExtensionImpl.Builder; DSL functions are updated to reflect these changes as well. - Deprecate
PointAnnotationManager.iconTextFitandPointAnnotationManager.iconTextFitPaddingin favor ofPointAnnotation.iconTextFitandPointAnnotation.iconTextFitPadding. - Introduce
LineLayer.lineDepthOcclusionFactor,PolylineAnnotationManager.lineDepthOcclusionFactorAPI. - Introduce experimental
Expression.activeAnchorAPI. - Introduce experimental
ModelLayerAPI to render 3D models on the map. - Introduce experimental
MapboxMap.addStyleModel,MapboxMap.removeStyleModel,MapboxMap.hasStyleModelAPIs. - Introduce experimental
LocationPuck3D.modelCastShadows,LocationPuck3D.modelReceiveShadows,LocationPuck3D.modelScaleModeAPIs. Note:LocationPuck3D.modelScaleModeAPI brings behavioral changes for LocationPuck3d scale andmodel-scaleproperty needs to be adjusted to correctly render the puck. - Introduce
Expression.hsl,Expression.hslacolor expression. - Introduce
Expression.measureLightlights configuration property. - Introduce
LineLayer.lineBorderColor,LineLayer.lineBorderWidthAPIs. - Introduce
BackgroundLayer.backgroundEmissiveStrength,CircleLayer.circleEmissiveStrength,FillLayer.fillEmissiveStrength,LineLayer.lineEmissiveStrength,SymbolLayer.iconImageCrossFade,SymbolLayer.iconEmissiveStrength,SymbolLayer.textEmissiveStrengthAPIs. - Introduce Annotation plugin APIs:
CircleAnnotationManager.circleEmissiveStrength,PolygonAnnotationManager.fillEmissiveStrength,PolylineAnnotationManager.lineDepthOcclusionFactor,PolylineAnnotationManager.lineEmissiveStrength. - Introduce experimental
FillExtrusionLayer.fillExtrusionRoundedRoof,FillExtrusionLayer.fillExtrusionEdgeRadius,FillExtrusionLayer.fillExtrusionAmbientOcclusionWallRadius,FillExtrusionLayer.fillExtrusionAmbientOcclusionGroundRadius,FillExtrusionLayer.fillExtrusionAmbientOcclusionGroundAttenuation,FillExtrusionLayer.fillExtrusionFloodLightColor,FillExtrusionLayer.fillExtrusionFloodLightIntensity,FillExtrusionLayer.fillExtrusionFloodLightWallRadius,FillExtrusionLayer.fillExtrusionFloodLightGroundRadius,FillExtrusionLayer.fillExtrusionFloodLightGroundAttenuation,FillExtrusionLayer.fillExtrusionVerticalScaleAPIs. - Introduce GeoJSONSource partial update APIs
GeoJsonSource.addGeoJSONSourceFeatures,GeoJsonSource.updateGeoJSONSourceFeatures,GeoJsonSource.removeGeoJSONSourceFeatures. - Introduce raster colorization via
raster-colorexpression andRasterLayer.rasterColor,RasterLayer.rasterColorMix,RasterLayer.rasterColorRangelayer properties. - Make both
StyleandMapboxMapimplementMapboxStyleManagerexposing all style related methods for the map and providing better alignment with iOS and GL-JS. - Add
FillExtrusionLayer.fillExtrusionCutoffFadeRangeandModelLayer.modelCutoffFadeRangeto control fade out of the layers when pitch is used. - Improve atmosphere rendering performance.
- Improve fill layer and model layer rendering performance on high pitch views.
- Improve GPU performance by drawing opaque 3D geometry without blending.
- Introduce
SymbolLayer.symbolZElevateproperty to elevate symbols along with the buildings that are in the same place. The feature is supported for symbols with point placement only. - Add
Atmosphere.verticalRangeproperty. - Add
GeoJsonSource.data(..)overloads to allow Java to call with and withoutdataId. - Add a new layer type
CustomLayerand style DSL to create it.CustomLayerallows to use custom OpenGL ES rendering throughCustomLayerHost.CustomLayercontains theslotproperty allowing using it with the Standard style. - Improve the caching model for the custom raster source.
- Optimize custom raster source data update.
- Increase rendering performance of shadows.
- Print warning log message for unknown style layer properties instead of causing fatal errors.
- Optimise memory usage in the
FillExtrusionLayer. - Improve the rendering performance of a
SymbolLayerthat usesSymbolLayer.symbolSortKeyproperty. - Reduce memory usage in fill-extrusion flood light and ground ambient occlusion.
- (Kotlin only) Deprecated
MapboxMap.getStyle()function. Please use propertyMapboxMap.style. - (Kotlin only) Deprecated
MapView.getMapboxMap()function. Please use propertyMapView.mapboxMap. - (Kotlin only) Deprecated
MapSurface.getMapboxMap()function. Please use propertyMapSurface.mapboxMap. - Handle zero duration map camera animators more efficiently resulting in performance improvements for gestures / viewport / locationcomponent.
- Function
DefaultLocationProvider.updatePuckBearingnow accepts null to stop listening for heading/course. - Add
keep-legacy-style-packstyle pack load extra option that prevents the style package removal from the legacy storage. - Enable rendering of fill extrusion flood lights on the ground with fully transparent fill extrusions.
- Add
cameraForCoordinatesoverload so that the padding for map and geometry can be specified separately. - Disable terrain when zoom-dependent exaggeration expression evaluates to zero.
- Add support for
glb3D tiles. - Align hill shade illumination direction with 3D lights.
- [compose] Add experimental
MapEventsto handle all events emitted byMapboxMap. - [compose] Expose
PointAnnotationGroup.symbolZElevateproperty. - [compose] Add
ViewAnnotation.layoutParamsproperty. - Introduce
ExtendedLocationProviderParametersto specifyDeviceLocationProviderparameters. - Add
coordinatesPadding,maxZoomandoffsetparameters toOverviewViewportStateOptionsto allow more granular control ofOverviewViewportState. - Add
CircleAnnotationManager.slot,PointAnnotationManager.slot,PolygonAnnotationManager.slot,PolylineAnnotationManager.slotto place the associated layer of theAnnotationManagerto the correct position of the map. - Introduce experimental APIs to work with Custom Raster Sources:
MapboxStyleManager.addStyleCustomRasterSource,MapboxStyleManager.setStyleCustomRasterSourceTileData,MapboxStyleManager.invalidateStyleCustomRasterSourceTile,MapboxStyleManager.invalidateStyleCustomRasterSourceRegion. - Expose experimental
CustomRasterSourceand non-experimentalCustomGeometrySourceas regularSource's providing a better way to work with them and also allowing using them in Style DSL. - Deprecate
CustomGeometrySource.invalidTileandCustomGeometrySource.invalidRegion;CustomGeometrySource.invalidateTileandCustomGeometrySource.invalidateRegionshould be used instead. - Add
LocationPuck3D.modelEmissiveStrengthandLocationPuck3D.modelEmissiveStrengthExpressionproperties to LocationComponent plugin to control the strength of the light emission.
Bug fixes 🐞
- Fix scale bar receives camera changes after being disabled the first time.
- Fix camera flying away on pitch gesture after some other animations.
- Fix map not being rendered when EGL exception happens but Android surface is still valid.
- Fix terrain rendering for the Terrarium-encoded tiles.
- Cancel pending style url loading request when loading a new style json.
- Fixes an issue that causes view annotations to be placed on the sky when high pitch and mercator projection is used.
- Fix the CustomGeometrySource
fetchTileFunctionandcancelTileFunctioncallbacks being invoked on the wrong thread. - Fix a rendering error that broke symbol layers on Samsung S22 devices.
- Cache featureState for newly added source in case it is not available in renderer.
- Fix issue with model layer blending with geometry tile source.
- Fix incorrectly set begin timestamp for the
RenderFrameFinishedevent. - Hide methods and properties from Java in
MapView,MapboxMapandSnapshotterthat are not supposed to be public. - Fix flood light not working by changing default EGL config to RGBA_8888.
- Fix a bug where the map would not zoom above a certain threshold on high-pitched views.
- Fix crashes if 3D layers are used alone on terrain or globe without any other layer types.
- Fix
LineLayerleaking if placed behind the satellite layer. - Fix line and raster layers interop for draped mode.
- Fix a crash when consecutive snapshot requests were made.
- Fix erroneous shadow map sampling of distant landmarks.
- Fix incorrect level-of-detail model being chosen for trees in some scenarios.
- Fix the style layer minimum and maximum zoom default values from infinity to actual ones.
- Fix widgets not showing on some zoom levels.
- Fix widgets flickering due to race condition if they are animated.
- Avoid listening for heading/course when location component puck bearing is disabled.
- Do not overwrite style URL when setting invalid style JSON.
- Do not store SDK version in TileStore.
- Fixed an issue where the camera padding is not calculated properly for
OverviewViewportState. - [compose] Fix the bug where wrong pixel ratio could be used in a dual display setup.
- [compose] Fix a lifecycle handling issue for
MapboxMapwhich results in potential memory leak. - Fix rendering of large/complex fill extrusion features.
- Fix a crash because of non-exported runtime-registered broadcasts receivers for apps targeting SDK 34.
- Fix a StackOverflow crash when
MultiGeometryis used forOverviewViewportStateOptions. - Fix flickering and wrong positions in elevated symbols.
- Update style layer's source should trigger repaint.
- Fix failure to load a 3D model when it uses a 32-bit index buffer.
- Fix rendering of the updated content on the map after a feature state change if terrain or globe were enabled.
- Fix a bug where snapshot is rendered without 3D content.
Dependencies
- Update gl-native to v11.0.0 and common to v24.0.0.
- Update dependencies :
| Dependency | Before | After |
|---|---|---|
| Android Gradle Plugin | 7.0.4 | 7.4.2 |
| Kotlin | 1.5.31 | 1.7.20 |
| NDK | 21.4.7075529 | 23.2.8568313 |
| EGL | 1.0 | 1.4 |
| org.jetbrains.kotlin:kotlin-stdlib-jdk7 | 1.5.31 | |
| org.jetbrains.kotlin:kotlin-stdlib-jdk8 | 1.7.20 | |
| Dokka plugin | 1.5.31 | 1.7.20 |
| androidx.core:core-ktx | 1.7.0 | 1.9.0 |
| androidx.appcompat:appcompat | 1.3.0 | 1.6.1 |
| androidx.test:rules | 1.4.0 | 1.5.0 |
| androidx.test:core | 1.4.0 | 1.5.0 |
| androidx.test:runner | 1.4.0 | 1.5.2 |
| androidx.test:orchestrator | 1.4.0 | 1.4.2 |
| androidx.test:monitor | 1.4.0 | 1.6.1 |
| androidx.test.espresso:espresso-core | 3.4.0 | 3.5.1 |
| androidx.test.ext:junit | 1.1.3 | 1.1.5 |
| org.jetbrains.kotlinx:kotlinx-coroutines-core | 1.3.9 | 1.6.1 |
| org.jetbrains.kotlinx:kotlinx-coroutines-test | 1.3.9 | 1.6.1 |
| io.mockk:mockk | 1.12.3 | 1.13.4 |
| io.mockk:mockk-agent-api | 1.12.3 | 1.13.4 |
| io.mockk:mockk-agent-jvm | 1.12.3 | 1.13.4 |
| org.robolectric:robolectric | 4.8.1 | 4.9.2 |
| com.android.tools.lint:lint-api | 30.0.4 | 30.4.2 |
| com.android.tools.lint:lint-checks | 30.0.4 | 30.4.2 |
| com.android.tools.lint:lint | 30.0.4 | 30.4.2 |
| com.android.tools.lint:lint-tests | 30.0.4 | 30.4.2 |
| com.android.tools:testutils | 30.0.4 | 30.4.2 |
| nl.jqno.equalsverifier:equalsverifier | 3.10.1 | 3.14 |
| io.gitlab.arturbosch.detekt:detekt-formatting | 1.20.0 | 1.22.0 |
| composeOptions -> kotlinCompilerExtensionVersion | 1.1.0-beta03 | 1.4.3 |
| androidx.compose:compose-bom | 2023.01.00 | |
| androidx.compose.compiler:compiler | 1.3.2 | |
| com.pinterest:ktlint | 0.39.0 | 0.48.2 |
11.0.0-rc.2 November 17, 2023
Breaking changes ⚠️
- Minimum OpenGL ES version is now 3.0
Features ✨ and improvements 🏁
- Promote Mapbox Standard style to stable.
- Introduce
ViewAnnotationOptions.allowOverlapWithPuckandViewAnnotationOptions.ignoreCameraPaddingto configure the dynamic view annotation's behaviour. - Avoid placing view annotation on overlapped line geometries, if the current bound layer is below other annotated line layers.
Bug fixes 🐞
- [compose] Fix a lifecycle handling issue for
MapboxMapwhich results in potential memory leak. - Fix a StackOverflow crash when
MultiGeometryis used forOverviewViewportStateOptions. - Fix flickering and wrong positions in elevated symbols.
- Update style layer's source should trigger repaint.
- Fix failure to load a 3D model when it uses a 32-bit index buffer.
- Fix rendering of the updated content on the map after a feature state change if terrain or globe were enabled.
- Fix view annotation disappearing on the upper parts of the screen when terrain is enabled.
- Trigger view annotation replacement if the associated layer/source gets changed.
- Fix a bug where snapshot is rendered without 3D content.
Dependencies
- Update gl-native to v11.0.0-rc.2 and common to v24.0.0-rc.3.
Known issues
- When adding a view annotation with
ViewAnnotationOptions.allowOverlapWithPuckorViewAnnotationOptions.ignoreCameraPaddingset to true, the same option for all the view annotations added previously will be overwritten to true. The fix will land in the next release.
11.0.0-rc.1 November 03, 2023
Breaking changes ⚠️
- Add
LocationService.getDeviceLocationProvidermethod that acceptsExtendedLocationProviderParameterstoLocationServiceinterface.
Features ✨ and improvements 🏁
- From v11.0.0-rc.1, Mapbox Compose Extension for Android is released as a separate module following the same release cadence with the main SDK, please refer to this guide to get started with Jetpack Compose, and v0.1.0 changelog for previous changelogs.
- [compose] Add experimental
MapEventsto handle all events emitted byMapboxMap. - [compose] Expose
PointAnnotationGroup.symbolZElevateproperty. - [compose] Add
ViewAnnotation.layoutParamsproperty. - Introduce
ExtendedLocationProviderParametersto specifyDeviceLocationProviderparameters. - Add
coordinatesPadding,maxZoomandoffsetparameters toOverviewViewportStateOptionsto allow more granular control ofOverviewViewportState. - Add
CircleAnnotationManager.slot,PointAnnotationManager.slot,PolygonAnnotationManager.slot,PolylineAnnotationManager.slotto place the associated layer of theAnnotationManagerto the correct position of the map. - Expose experimental
CustomRasterSourceand non-experimentalCustomGeometrySourceas regularSource's providing a better way to work with them and also allowing using them in Style DSL. - Deprecate
CustomGeometrySource.invalidTileandCustomGeometrySource.invalidRegion;CustomGeometrySource.invalidateTileandCustomGeometrySource.invalidateRegionshould be used instead. - Add
LocationPuck3D.modelEmissiveStrengthandLocationPuck3D.modelEmissiveStrengthExpressionproperties to LocationComponent plugin to control the strength of the light emission.
Bug fixes 🐞
- Fixed an issue where the camera padding is not calculated properly for
OverviewViewportState. - [compose] Fix the bug where wrong pixel ratio could be used in a dual display setup.
- Fix the line label flickering issue by eliminating the anchor rounding error.
- Fix rendering of large/complex fill extrusion features.
- Fix a crash because of non-exported runtime-registered broadcasts receivers for apps targeting SDK 34.
Dependencies
- Update gl-native to v11.0.0-rc.1 and common to v24.0.0-rc.2.
11.0.0-beta.6 October 24, 2023
Breaking changes ⚠️
- Extension function
Style.getProjection()return type changed fromProjectiontoProjection?. - Extension function
LocationComponentPlugin.createDefault2DPuckinLocationComponentUtils.ktis now stand-alonecreateDefault2DPuck. - Extension function
LocationComponentPlugin.createDefault2DPuckinLocationComponentUtilsis now stand-alonecreateDefault2DPuck. createDefault2DPuckdoes not require acontextparameter.- Increase minimum location puck bearing threshold needed to trigger an animation to 1 degree (previously 0.01 degrees) to reduce the CPU usage.
- Location component puck bearing enabled property (
MapView.location.puckBearingEanbled) has been changed tofalseby default. ViewAnnotationManager.getViewAnnotationByFeatureIdis renamed toViewAnnotationManager.getViewAnnotation,ViewAnnotationManager.getViewAnnotationByFeatureIdis renamed toViewAnnotationManager.getViewAnnotation.ViewAnnotationManager.getViewAnnotationOptionsByViewis renamed toViewAnnotationManager.getViewAnnotationOptions.ViewAnnotationManager.getViewAnnotationOptionsByFeatureIdis renamed toViewAnnotationManager.getViewAnnotationOptions.ViewAnnotationAnchorConfigfieldsoffsetX/offsetYare now of type Double instead of Int.ViewAnnotationOptionsaccepts list of anchorsvariableAnchorsinstead ofanchor/offsetX/offsetY.ViewAnnotationOptionsfieldswidth/heightare now of type Double instead of Int.OnViewAnnotationUpdatedListener.onViewAnnotationPositionUpdatedargumentswidth/heightare now of type Double instead of Int.- Add
getNamemethod toDeviceLocationProviderinterface. - Add boolean parameter
allowUserDefinedtogetDeviceLocationProvidermethod inLocationServiceinterface.
Features ✨ and improvements 🏁
- Add dynamic view annotations that can be attached to complex feature geometries and reposition itself based on the current camera viewport. To create dynamic view annotation use
AnnotatedFeatureof typeANNOTATED_LAYER_FEATURE. Multiple dynamic view annotations can be attached to the same feature. - The following APIs have been promoted to stable:
LineLayer.lineDepthOcclusionFactor,LineLayer.lineDepthOcclusionFactorTransition,LineLayer.lineEmissiveStrengthandLineLayer.lineEmissiveStrengthTransitionSymbolLayer.iconImageCrossFade,SymbolLayer.iconImageCrossFadeTransition,SymbolLayer.iconEmissiveStrength,SymbolLayer.iconEmissiveStrengthTransition,SymbolLayer.textEmissiveStrengthandSymbolLayer.textEmissiveStrengthTransitionBackgroundLayer.backgroundEmissiveStrengthandBackgroundLayer.backgroundEmissiveStrengthTransitionCircleLayer.circleEmissiveStrengthandCircleLayer.circleEmissiveStrengthTransitionFillLayer.fillEmissiveStrengthandFillLayer.fillEmissiveStrengthTransitionFlatLight,AmbientLight,DirectionalLightand related APIsslotfor all the layers- Style Import APIs:
getStyleImports,removeStyleImport,getStyleImportSchema,getStyleImportConfigProperties,getStyleImportConfigProperty,setStyleImportConfigProperties,setStyleImportConfigProperty - Annotation plugin APIs:
CircleAnnotationManager.circleEmissiveStrength,PolygonAnnotationManager.fillEmissiveStrength,PolylineAnnotationManager.lineDepthOcclusionFactor,PolylineAnnotationManager.lineEmissiveStrength - Map Overlay plugin and related APIs
- (Kotlin only) Deprecated
MapboxMap.getStyle()function. Please use propertyMapboxMap.style. - (Kotlin only) Deprecated
MapView.getMapboxMap()function. Please use propertyMapView.mapboxMap. - (Kotlin only) Deprecated
MapSurface.getMapboxMap()function. Please use propertyMapSurface.mapboxMap. - Handle zero duration map camera animators more efficiently resulting in performance improvements for gestures / viewport / locationcomponent.
DefaultLocationProvider.updatePuckBearingnow accepts null to stop listening for heading/course.- Add
keep-legacy-style-packstyle pack load extra option that prevents the style package removal from the legacy storage. - Enable rendering of fill extrusion flood lights on the ground with fully transparent fill extrusions.
- Add
cameraForCoordinatesoverload so that the padding for map and geometry can be specified separately. - Disable terrain when zoom-dependent exaggeration expression evaluates to zero.
- Add support for
glb3D tiles. - Align hillshade illumination direction with 3D lights.
Bug fixes 🐞
- Fix widgets not showing on some zoom levels.
- Fix widgets flickering due to race condition if they are animated.
- Fix crash when setting
mapbox:mapbox_locationComponentLocationPuck = "location_puck_2_d"in map view XML without specifying all images. - Fix changing location bearing from
HEADINGtoCOURSEnot working. - Avoid listening for heading/course when location component puck bearing is disabled.
- Fix the crash clicking on attribution when not using the
AppCompattheme. - Do not overwrite style URL when setting invalid style JSON.
- Do not store SDK version in TileStore.
Dependencies
- Update gl-native to v11.0.0-beta.7 and common to v24.0.0-beta.7.
11.0.0-beta.5 October 09, 2023
Breaking changes ⚠️
- Rename
MapCameraManagerDelegateproperties for methodscameraForCoordinateBounds,cameraForCoordinatesandcameraForGeometryto align them withMapboxMapmethods. - Consolidate
FetchTileFunctionCallbackandCancelTileFunctionCallbackby single typeTileFunctionCallback. - Make
Imageparameter nullable insetStyleCustomRasterSourceTileData()method.
Features ✨ and improvements 🏁
- Add
GeoJsonSource.data(..)overloads to allow Java to call with and withoutdataId. - Add a new layer type
CustomLayerand style DSL to create it.CustomLayerallows to use custom OpenGL ES rendering throughCustomLayerHost.CustomLayercontains theslotproperty allowing using it with the Standard style. - Improve the caching model for the custom raster source.
- Optimize custom raster source data update.
- Increase rendering performance of shadows.
- Print warning log message for unknown style layer properties instead of causing fatal errors.
- Optimise memory usage in the
FillExtrusionLayer. - Improve the rendering performance of a
SymbolLayerthat usesSymbolLayer.symbolSortKeyproperty. - Reduce memory usage in fill-extrusion flood light and ground ambient occlusion.
Bug fixes 🐞
- Hide methods and properties from Java in
MapView,MapboxMapandSnapshotterthat are not supposed to be public. - Fix
Styledocs for methodssetStyleImportConfigProperties,setStyleImportConfigProperty,removeGeoJSONSourceFeatures. - Fix flood light not working by changing default EGL config to RGBA_8888.
- Fix a bug where the map would not zoom above a certain threshold on high-pitched views.
- Fix crashes if 3D layers are used alone on terrain or globe without any other layer types.
- Fix
LineLayerleaking if placed behind the satellite layer. - Fix line and raster layers interop for draped mode.
- Fix a crash when consecutive snapshot requests were made.
- Fix erroneous shadow map sampling of distant landmarks.
- Fix incorrect level-of-detail model being chosen for trees in some scenarios.
- Fix the style layer minimum and maximum zoom default values from infinity to actual ones.
Dependencies
- Update gl-native to v11.0.0-beta.6 and common to v24.0.0-beta.6.
11.0.0-beta.4 September 21, 2023
Breaking changes ⚠️
- Remove setter functions for
Style.styleURIandStyle.styleJSONas loading the style should happen only withMapboxMap.loadStyle. - Rename
StyleImageMissing.getStyleImageMissingEventDatatoStyleImageMissing.toStyleImageMissingEventData.
Features ✨ and improvements 🏁
- Introduce experimental APIs to work with Custom Raster Sources:
MapboxMap.addCustomRasterSource,MapboxMap.setCustomRasterSourceTileData,MapboxMap.invalidateCustomRasterSourceTile,MapboxMap.invalidateCustomRasterSourceRegion. - Copy relevant
Stylemethods toMapboxMapproviding better alignment with iOS and GL-JS. - Add
FillExtrusionLayer.fillExtrusionCutoffFadeRangeandModelLayer.modelCutoffFadeRangeto control fade out of the layers when pitch is used. - Improve atmosphere rendering performance.
- Improve fill layer and model layer rendering performance on high pitch views.
- Improve GPU performance by drawing opaque 3D geometry without blending.
- Introduce experimental
SymbolLayer.symbolZElevateproperty to elevate symbols along with the buildings that are in the same place. The feature is supported for symbols with point placement only. - Add
Atmosphere.verticalRangeproperty.
Bug fixes 🐞
- Free resources immediately after map event subscription is canceled.
- Fix map event listeners not being removed when
MapboxMap.remove*Listeneris called. - Fix issue where the terrain didn't work if defined within a style fragment.
- The Custom Geometry Source
fetchTileFunctionandcancelTileFunctioncallbacks are invoked on the client thread. - Fixes a rendering error that broke symbol layers on Samsung S22 devices.
- Cache featureState for newly added source in case it is not available in renderer.
- Fix issue with model layer blending with geometry tile source.
- Fix incorrectly set begin timestamp for the RenderFrameFinished event.
Dependencies
- Update gl-native to v11.0.0-beta.5 and common to v24.0.0-beta.5.
11.0.0-beta.3 September 08, 2023
Breaking changes ⚠️
- The
MapCameraPlugin'sonCameraMovemethod now usesPointfor camera center andEdgeInsetsfor padding. - Remove
MapInitOptions.optimizeForTerrainas whenever terrain is present layer order is automatically adjusted for better performance. - Replace
MapboxMapandMapCameraManagerDelegateAPIsdragStart,dragEnd,getDragCameraOptionswithcameraForDrag,setCenterAltitudeMode.
Features ✨ and improvements 🏁
- Avoid creating unnecessary objects during animation under some conditions.
- Improve map camera and gestures when terrain is used to fix camera bumpiness and map flickering.
- Use a fallback glyph URL if a style does not define one. This enables the addition of Symbol layers to an empty style or to the style that doesn't use Symbol layers.
- Use ETC2 compression for raster tiles to support transparency.
Bug fixes 🐞
- Fix scale bar receives camera changes after being disabled the first time.
- Fix camera flying away on pitch gesture after some other animations.
- Fix map not being rendered when EGL exception happens but Android surface is still valid.
- Fix fallback rules for the style's transition property. The change fixes style transitions when style imports are modified for the Standard style.
- Fix terrain rendering for the Terrarium-encoded tiles.
- Cancel pending style url loading request when loading a new style json.
- Fixes an issue that causes view annotations to be placed on the sky when high pitch and mercator projection is used.
Dependencies
- Update gl-native to v11.0.0-beta.4 and common to v24.0.0-beta.4.
11.0.0-beta.2 August 24, 2023
Breaking changes ⚠️
- Replace style related enum classes with regular classes.
- Migrate from
android.app.AlertDialogtoandroidx.appcompat.app.AlertDialogfor attribution plugin. - Rename
MapboxMap.subscribeStyleImageUnusedtoMapboxMap.subscribeStyleImageRemoveUnused.
Features ✨ and improvements 🏁
- Introduce experimental
MapboxMapRecorderallowing to record and replay custom scenarios. - New compose example
MulitDisplayActiviyported from XML test app. - Add Mapbox Privacy Policy to attribution links.
Bug fixes 🐞
- Fix the bug when anchor was not reset after gestures leading to an unexpected map camera animation result with incorrect
CameraState.center. - Fix a rounding error when point lies at the edge of the screen by using
rountToIntfor limitingMapboxMap.pixelsForCoordinatesto the bounds of MapView. - Fix the bug when
MapboxMap.getStylereturned NULL ifMapboxMap.subscribeStyleLoadedcalled beforeMapboxMap.loadStyle. - Fix NPE when animating edge insets types (e.g. map padding).
- Reduce segment overlap in flood lighting to improve rendering performance.
- Enable offline support for the Standard style.
- Add wireframe rendering debug feature
MapDebugOptions.LAYERS3_DWIREFRAMEandMapDebugOptions.LAYERS2_DWIREFRAME.
Dependencies
Update dependencies:
| Dependency | Before | After |
|---|---|---|
| NDK | 21.4.7075529 | 23.2.8568313 |
| gl-native | 11.0.0-beta.2 | 11.0.0-beta.3 |
| common | 24.0.0-beta.2 | 24.0.0-beta.3 |
11.0.0-beta.1 August 2, 2023
Breaking changes ⚠️
- Remove deprecated
GeoJsonSourcepublic constructor, builder should be used instead. - Remove deprecated
MapboxMap.queryRenderedFeaturesmethods. - Remove
Snapshotter.setTileMode,Snapshotter.isInTileModemethods. - Remove deprecated
MapStyleStateDelegateandisFullyLoadedmethod. - Remove experimental
setRenderCacheOptions,getRenderCacheOptionsapis. - Update SDK's
targetSdkVersionandcompileSdkVersionto 33. - Add
callbackargument to theMapboxMapmethodsgetFeatureState,setFeatureState,removeFeatureState. - Use different callback types for the
MapboxMap.queryRenderedFeaturesand theMapboxMap.querySourceFeaturesmethods. - Return
cancelablefrom theMapboxMapmethods :getFeatureState,setFeatureState,removeFeatureState,querySourceFeatures,getGeoJsonClusterLeaves,getGeoJsonClusterChildren,getGeoJsonClusterExpansionZoom. - Remove the deprecated
MapboxMap.queryFeatureExtensionsmethod. - Remove
MapAnimationOptions.animatorListenerproperty. In order to subscribe to animations, provideAnimator.animatorListenerwithflyTo,easeTo,pitchBy,scaleBy,moveBy,rotateByapis. - Replace
LocationEngineuse withLocationServiceinDefaultProvider. - Add new
LocationConsumer.onErrormethod to allow consumers handle location errors. - Remove
MapView#location2related interfaces and moveshowAccuracyRing,accuracyRingColor,accuracyRingBorderColor,puckBearingEnabledandpuckBearingSourcetoMapView#location. - Make
AttributionSettings,CompassSettings,GesturesSettings,LocationComponentSettings,LogoSettings,ScaleBarSettingsnot Kotlindata class, better binary compatible and implementingParcelable. - Change
CompassSettings#image,LocationPuck2D#topImage,LocationPuck2D#bearingImage,LocationPuck2D#shadowImagetoImageHolderallowing to pass either drawable id orBitmap. - Remove deprecated
backgroundPatternTransition,lineDasharrayTransition,linePatternTransition,fillPatternTransitionproperties. - Replace
MapSnapshotInterfaceinterface withMapSnapshotResultabstract class and removeimage()method,bitmap()should be used instead. - Change
Annotation.idfrom monotonically increasingLongto UUID represented asString. - Remove
Annotation.featureIdentifierused to connect with View Annotations, nowAnnotation.idshould be used instead. - Rename
PuckBearingSourcetoPuckBearingin location component plugin. - Remove deprecated overloaded
Style.setStyleGeoJSONSourceData(sourceId: String, data: GeoJSONSourceData)method. - Rename
MapboxMap.setMemoryBudgettoMapboxMap.setTileCacheBudgetand make it non-experimental. - Update Mapbox styles to latest versions.
- Remove
ResourceOptionsandResourceOptionsManager. IntroduceMapboxOptionsandMapboxMapsOptionsto handle application-level access token and other generic options. - Removed XML attributes
mapbox_resourcesAccessTokenandmapbox_resourcesBaseUrl.
| Style | Before | After |
|---|---|---|
| MAPBOX_STREETS | mapbox://styles/mapbox/streets-v11 | mapbox://styles/mapbox/streets-v12 |
| SATELLITE_STREETS | mapbox://styles/mapbox/satellite-streets-v11 | mapbox://styles/mapbox/satellite-streets-v12 |
| OUTDOORS | mapbox://styles/mapbox/outdoors-v11 | mapbox://styles/mapbox/outdoors-v12 |
| LIGHT | mapbox://styles/mapbox/light-v10 | mapbox://styles/mapbox/light-v11 |
| DARK | mapbox://styles/mapbox/dark-v10 | mapbox://styles/mapbox/dark-v11 |
- Remove native interfaces
StyleManagerInterface,StyleInterface,CameraManagerInterface,MapInterface,ObservableInterfaceand use onlyMapobject to access native methods. - Make map events typed-safe, events are now have their own subscription methods.
Following events are added as typed-safe,
CameraChanged,MapIdle,MapLoadingError,MapLoaded,StyleDataLoaded,StyleLoaded,StyleImageMissing,StyleImageRemovedUnunsed,RenderFrameStarted,RenderFrameFinished,SourceAdded,SourceDataLoaded,SourceRemoved,ReourceRequest. Allsubscribemethods returnCancelableobject, which users could store and callcancelwhen subscription is no longer needed.MapboxMap.unsubscribemethods were removed. - Rename
LocationConsumer.onAccuracyRadiusUpdatedtoonHorizontalAccuracyRadiusUpdated. - Deprecate
MapboxMap.loadStyleUri,MapboxMap.loadStyleJsonandMapboxMap.loadStylemethods and introduce oneMapboxMap.loadStyleaccepting either URI / JSON or Style DSL block. - Replace
com.mapbox.maps.plugin.animation.Cancelablewithcom.mapbox.common.Cancelable. - Remove
TileStoreOptions.MAPBOX_ACCESS_TOKENused e.g. inTileStore.setOption(TileStoreOptions.MAPBOX_ACCESS_TOKEN, someDomain, someValue)as it has become redundant. - Introduce
MapboxTracingobject allowing to enable Android traces to measure performance of the SDK. More details and instructions could be found inWorking with tracessection inDEVELOPING.md. - Remove Mapbox plugin implementations from public API surface.
- Remove
HttpServiceFactory.getInstance,HttpServiceFactory.reset,HttpServiceFactory.setUserDefinedmethods. - Replace
HttpServiceFactory.getInstance().setInterceptorwithHttpServiceFactory.setHttpServiceInterceptor. - Argument
dataIdof theGeoJson.feature,GeoJson.featureCollection,GeoJson.geometry,GeoJson.url,GeoJson.databecame non-nullable. - Remove
Style.getStyleSourcesAttribution.MapboxMap.getAttributionsshould be used instead.
Features ✨ and improvements 🏁
- Add clustering support for CircleAnnotationManager.
- Update Kotlin version to v1.7.20 and compose compiler version to 1.3.2.
- Improve ergonomics of
Snapshotter.startmethod to align with iOS and allow to re-useCanvasfor user drawing. - Add
MapboxMap.coordinateBoundsForRectreturningCoordinateBoundsfor givenRectFof screen coordinates. - Add optional
maxZoomandoffsetparameters toMapboxMap.cameraForCoordinateBounds. - Mark
GeoJsonSource.url/GeoJsonSource.Builder.urlmethods as deprecated,GeoJsonSource.data/GeoJsonSource.Builder.datashould be used instead. - Refactor style Light APIs: introduce
AmbientLight,DirectionalLight,FlatLightand methods to set them to style. - Expose new APIs to import and configure styles:
getStyleImports,removeStyleImport,getStyleImportSchema,getStyleImportConfigProperties,setStyleImportConfigProperties,getStyleImportConfigProperty,setStyleImportConfigProperty - Expose
slotproperty for allLayers to link layers from imported styles. - Add expression support for visibility layer property.
- Add the
MapboxMap.resetFeatureStatemethod. - Make padding optional for
MapboxMap.cameraForCoordinateBounds,MapboxMap.cameraForCoordinates,MapboxMap.cameraForGeometrymethods. - Add
FreeCameraOptions.getLocationandFreeCameraOptions.getAltitudemethods. - Add
MapboxMap.coordinatesForRect(rectF: RectF)to support rectangle parameters. - Add
suspendvariants for the asyncMapboxMapfunctions :queryRenderedFeatures,querySourceFeatures,setFeatureState,getFeatureState,removeFeatureState,getGeoJsonClusterLeaves,getGeoJsonClusterChildren,getGeoJsonClusterExpansionZoom. - Add
MapboxMap.mapLoadedEvents,MapboxMap.mapLoadingErrorEvents,MapboxMap.styleLoadedEvents,MapboxMap.styleDataLoadedEvents,MapboxMap.cameraChangedEvents,MapboxMap.mapIdleEvents,MapboxMap.sourceAddedEvents,MapboxMap.sourceRemovedEvents,MapboxMap.sourceDataLoadedEvents,MapboxMap.styleImageMissingEvents,MapboxMap.styleImageRemoveUnusedEvents,MapboxMap.renderFrameStartedEvents,MapboxMap.renderFrameFinishedEvents,MapboxMap.resourceRequestEventsreturning Flow of events. - Introduce custom lint rules to check illegal usage of literals in Expression DSL and suggest auto fix.
- Introduce custom lint rules to check illegal number of arguments within given Expression DSL.
- Introduce custom lint rules to check unused layer/source/light/terrain/atmosphere/projection objects in the Style DSL, and suggest auto fix to add it to the style using unaryPlus(+) operator.
- Improve performance for
Snapshotterwhen obtaining the bitmap. - Add
ImageSource.updateImage(Bitmap)method. - Introduce Expression overload functions
linearInterpolator,exponentialInterpolator,cubicBezierInterpolator,step,matchandswitchCaseto construct these expressions with strongly typed parameters. - Introduce
ImageExtensionImpl.Builder(imageId, image),ImageExtensionImpl.Builder(imageId, image)constructors and deprecatedImageExtensionImpl.Builder(imageId),ImageExtensionImpl.Builder.image(image),ImageExtensionImpl.Builder.bitmap(bitmap), as image/bitmap is required forImageExtensionImpl.Builder; DSL functions are updated to reflect these changes as well. - Deprecate
PointAnnotationManager.iconTextFitandPointAnnotationManager.iconTextFitPaddingin favor ofPointAnnotation.iconTextFitandPointAnnotation.iconTextFitPadding. - Introduce experimental lights API to enable a uniform 3D lighting across the map. Use
Style.addLights3DorStyle.setup3DLightsto enableAmbientandDirectionallight. - Introduce
LineLayer.lineDepthOcclusionFactor,PolylineAnnotationManager.lineDepthOcclusionFactorAPI. - Introduce experimental
Expression.activeAnchorAPI. - Introduce experimental
ModelLayerAPI to render 3D models on the map. - Introduce experimental
MapboxMap.addStyleModel,MapboxMap.removeStyleModel,MapboxMap.hasStyleModelAPIs. - Introduce experimental
LocationPuck3D.modelCastShadows,LocationPuck3D.modelReceiveShadows,LocationPuck3D.modelScaleModeAPIs. Note:LocationPuck3D.modelScaleModeAPI brings behavioral changes for LocationPuck3d scale andmodel-scaleproperty needs to be adjusted to correctly render the puck. - Introduce
Expression.hsl,Expression.hslacolor expression. - Introduce
Expression.measureLightlights configuration property. - Introduce
LineLayer.lineBorderColor,LineLayer.lineBorderWidthAPIs. - Introduce experimental
BackgroundLayer.backgroundEmissiveStrength,CircleLayer.circleEmissiveStrength,FillLayer.fillEmissiveStrength,LineLayer.lineEmissiveStrength,SymbolLayer.iconEmissiveStrength,SymbolLayer.textEmissiveStrengthAPIs. - Introduce experimental
FillExtrusionLayer.fillExtrusionRoundedRoof,FillExtrusionLayer.fillExtrusionEdgeRadius,FillExtrusionLayer.fillExtrusionAmbientOcclusionWallRadius,FillExtrusionLayer.fillExtrusionAmbientOcclusionGroundRadius,FillExtrusionLayer.fillExtrusionAmbientOcclusionGroundAttenuation,FillExtrusionLayer.fillExtrusionFloodLightColor,FillExtrusionLayer.fillExtrusionFloodLightIntensity,FillExtrusionLayer.fillExtrusionFloodLightWallRadius,FillExtrusionLayer.fillExtrusionFloodLightGroundRadius,FillExtrusionLayer.fillExtrusionFloodLightGroundAttenuation,FillExtrusionLayer.fillExtrusionVerticalScaleAPIs. - Introduce new Mapbox 3D style
Style.STANDARDand make it default. - Introduce GeoJSONSource partial update APIs
GeoJsonSource.addGeoJSONSourceFeatures,GeoJsonSource.updateGeoJSONSourceFeatures,GeoJsonSource.removeGeoJSONSourceFeatures. - Introduce raster colorization via
raster-colorexpression andRasterLayer.rasterColor,RasterLayer.rasterColorMix,RasterLayer.rasterColorRangelayer properties.
Dependencies
- Update gl-native to v11.0.0-beta.2 and common to v24.0.0-beta.2.
- Instantiate OpenGL ES context 3.0, if available, otherwise fallback to 2.0.
- Use EGL 1.4 instead of EGL 1.0.
- Update dependencies :
| Dependency | Before | After |
|---|---|---|
| Android Gradle Plugin | 7.0.4 | 7.4.2 |
| Kotlin | 1.5.31 | 1.7.20 |
| org.jetbrains.kotlin:kotlin-stdlib-jdk7 | 1.5.31 | |
| org.jetbrains.kotlin:kotlin-stdlib-jdk8 | 1.7.20 | |
| Dokka plugin | 1.5.31 | 1.7.20 |
| androidx.core:core-ktx | 1.7.0 | 1.9.0 |
| androidx.appcompat:appcompat | 1.3.0 | 1.6.1 |
| androidx.test:rules | 1.4.0 | 1.5.0 |
| androidx.test:core | 1.4.0 | 1.5.0 |
| androidx.test:runner | 1.4.0 | 1.5.2 |
| androidx.test:orchestrator | 1.4.0 | 1.4.2 |
| androidx.test:monitor | 1.4.0 | 1.6.1 |
| androidx.test.espresso:espresso-core | 3.4.0 | 3.5.1 |
| androidx.test.ext:junit | 1.1.3 | 1.1.5 |
| org.jetbrains.kotlinx:kotlinx-coroutines-core | 1.3.9 | 1.6.1 |
| org.jetbrains.kotlinx:kotlinx-coroutines-test | 1.3.9 | 1.6.1 |
| io.mockk:mockk | 1.12.3 | 1.13.4 |
| io.mockk:mockk-agent-api | 1.12.3 | 1.13.4 |
| io.mockk:mockk-agent-jvm | 1.12.3 | 1.13.4 |
| org.robolectric:robolectric | 4.8.1 | 4.9.2 |
| com.android.tools.lint:lint-api | 30.0.4 | 30.4.2 |
| com.android.tools.lint:lint-checks | 30.0.4 | 30.4.2 |
| com.android.tools.lint:lint | 30.0.4 | 30.4.2 |
| com.android.tools.lint:lint-tests | 30.0.4 | 30.4.2 |
| com.android.tools:testutils | 30.0.4 | 30.4.2 |
| nl.jqno.equalsverifier:equalsverifier | 3.10.1 | 3.14 |
| io.gitlab.arturbosch.detekt:detekt-formatting | 1.20.0 | 1.22.0 |
| composeOptions -> kotlinCompilerExtensionVersion | 1.1.0-beta03 | 1.4.3 |
| androidx.compose:compose-bom | 2023.01.00 | |
| androidx.compose.compiler:compiler | 1.3.2 | |
| com.pinterest:ktlint | 0.39.0 | 0.48.2 |
11.0.0-alpha.2 June 27, 2023
Breaking changes ⚠️
- Remove deprecated
MapboxMap.queryRenderedFeaturesmethods. - Remove
Snapshotter.setTileMode,Snapshotter.isInTileModemethods. - Remove deprecated
MapStyleStateDelegateandisFullyLoadedmethod. - Remove experimental
setRenderCacheOptions,getRenderCacheOptionsapis. - Update SDK's
targetSdkVersionandcompileSdkVersionto 33. - Add
callbackargument to theMapboxMapmethodsgetFeatureState,setFeatureState,removeFeatureState. - Use different callback types for the
MapboxMap.queryRenderedFeaturesand theMapboxMap.querySourceFeaturesmethods. - Return
cancelablefrom theMapboxMapmethods :getFeatureState,setFeatureState,removeFeatureState,querySourceFeatures,getGeoJsonClusterLeaves,getGeoJsonClusterChildren,getGeoJsonClusterExpansionZoom. - Remove the deprecated
MapboxMap.queryFeatureExtensionsmethod. - Remove
MapAnimationOptions.animatorListenerproperty. In order to subscribe to animations, provideAnimator.animatorListenerwithflyTo,easeTo,pitchBy,scaleBy,moveBy,rotateByapis. - Replace
LocationEngineuse withLocationServiceinDefaultProvider. - Add new
LocationConsumer.onErrormethod to allow consumers handle location errors. - Remove
MapView#location2related interfaces and moveshowAccuracyRing,accuracyRingColor,accuracyRingBorderColor,puckBearingEnabledandpuckBearingSourcetoMapView#location. - Make
AttributionSettings,CompassSettings,GesturesSettings,LocationComponentSettings,LogoSettings,ScaleBarSettingsnot Kotlindata class, better binary compatible and implementingParcelable. - Change
CompassSettings#image,LocationPuck2D#topImage,LocationPuck2D#bearingImage,LocationPuck2D#shadowImagetoImageHolderallowing to pass either drawable id orBitmap. - Remove deprecated
backgroundPatternTransition,lineDasharrayTransition,linePatternTransition,fillPatternTransitionproperties. - Replace
MapSnapshotInterfaceinterface withMapSnapshotResultabstract class and removeimage()method,bitmap()should be used instead. - Change
Annotation.idfrom monotonically increasingLongto UUID represented asString. - Remove
Annotation.featureIdentifierused to connect with View Annotations, nowAnnotation.idshould be used instead. - Rename
PuckBearingSourcetoPuckBearingin location component plugin. - Remove deprecated overloaded
Style.setStyleGeoJSONSourceData(sourceId: String, data: GeoJSONSourceData)method. - Rename
MapboxMap.setMemoryBudgettoMapboxMap.setTileCacheBudgetand make it non-experimental. - Update Mapbox styles to latest versions.
- Remove
ResourceOptionsandResourceOptionsManager. IntroduceMapboxOptionsandMapboxMapsOptionsto handle application-level access token and other generic options. - Removed XML attributes
mapbox_resourcesAccessTokenandmapbox_resourcesBaseUrl.
| Style | Before | After |
|---|---|---|
| MAPBOX_STREETS | mapbox://styles/mapbox/streets-v11 | mapbox://styles/mapbox/streets-v12 |
| SATELLITE_STREETS | mapbox://styles/mapbox/satellite-streets-v11 | mapbox://styles/mapbox/satellite-streets-v12 |
| OUTDOORS | mapbox://styles/mapbox/outdoors-v11 | mapbox://styles/mapbox/outdoors-v12 |
| LIGHT | mapbox://styles/mapbox/light-v10 | mapbox://styles/mapbox/light-v11 |
| DARK | mapbox://styles/mapbox/dark-v10 | mapbox://styles/mapbox/dark-v11 |
- Remove native interfaces
StyleManagerInterface,StyleInterface,CameraManagerInterface,MapInterface,ObservableInterfaceand use onlyMapobject to access native methods. - Make map events typed-safe, events are now have their own subscription methods.
Following events are added as typed-safe,
CameraChanged,MapIdle,MapLoadingError,MapLoaded,StyleDataLoaded,StyleLoaded,StyleImageMissing,StyleImageRemovedUnunsed,RenderFrameStarted,RenderFrameFinished,SourceAdded,SourceDataLoaded,SourceRemoved,ReourceRequest. Allsubscribemethods returnCancelableobject, which users could store and callcancelwhen subscription is no longer needed.MapboxMap.unsubscribemethods were removed. - Rename
LocationConsumer.onAccuracyRadiusUpdatedtoonHorizontalAccuracyRadiusUpdated. - Deprecate
MapboxMap.loadStyleUri,MapboxMap.loadStyleJsonandMapboxMap.loadStylemethods and introduce oneMapboxMap.loadStyleaccepting either URI / JSON or Style DSL block. - Replace
com.mapbox.maps.plugin.animation.Cancelablewithcom.mapbox.common.Cancelable. - Remove
TileStoreOptions.MAPBOX_ACCESS_TOKENused e.g. inTileStore.setOption(TileStoreOptions.MAPBOX_ACCESS_TOKEN, someDomain, someValue)as it has become redundant. - Introduce
MapboxTracingobject allowing to enable Android traces to measure performance of the SDK. More details and instructions could be found inWorking with tracessection inDEVELOPING.md. - Remove Mapbox plugin implementations from public API surface.
- Remove
HttpServiceFactory.getInstance,HttpServiceFactory.reset,HttpServiceFactory.setUserDefinedmethods. - Replace
HttpServiceFactory.getInstance().setInterceptorwithHttpServiceFactory.setHttpServiceInterceptor. - Argument
dataIdof theGeoJson.feature,GeoJson.featureCollection,GeoJson.geometry,GeoJson.url,GeoJson.databecame non-nullable.
Features ✨ and improvements 🏁
- Add the
MapboxMap.resetFeatureStatemethod. - Make padding optional for
MapboxMap.cameraForCoordinateBounds,MapboxMap.cameraForCoordinates,MapboxMap.cameraForGeometrymethods. - Add
FreeCameraOptions.getLocationandFreeCameraOptions.getAltitudemethods. - Add
MapboxMap.coordinatesForRect(rectF: RectF)to support rectangle parameters. - Add
suspendvariants for the asyncMapboxMapfunctions :queryRenderedFeatures,querySourceFeatures,setFeatureState,getFeatureState,removeFeatureState,getGeoJsonClusterLeaves,getGeoJsonClusterChildren,getGeoJsonClusterExpansionZoom. - Add
MapboxMap.mapLoadedEvents,MapboxMap.mapLoadingErrorEvents,MapboxMap.styleLoadedEvents,MapboxMap.styleDataLoadedEvents,MapboxMap.cameraChangedEvents,MapboxMap.mapIdleEvents,MapboxMap.sourceAddedEvents,MapboxMap.sourceRemovedEvents,MapboxMap.sourceDataLoadedEvents,MapboxMap.styleImageMissingEvents,MapboxMap.styleImageRemoveUnusedEvents,MapboxMap.renderFrameStartedEvents,MapboxMap.renderFrameFinishedEvents,MapboxMap.resourceRequestEventsreturning Flow of events. - Introduce custom lint rules to check illegal usage of literals in Expression DSL and suggest auto fix.
- Introduce custom lint rules to check illegal number of arguments within given Expression DSL.
- Introduce custom lint rules to check unused layer/source/light/terrain/atmosphere/projection objects in the Style DSL, and suggest auto fix to add it to the style using unaryPlus(+) operator.
- Improve performance for
Snapshotterwhen obtaining the bitmap. - Add
ImageSource.updateImage(Bitmap)method. - Introduce Expression overload functions
linearInterpolator,exponentialInterpolator,cubicBezierInterpolator,step,matchandswitchCaseto construct these expressions with strongly typed parameters. - Introduce
ImageExtensionImpl.Builder(imageId, image),ImageExtensionImpl.Builder(imageId, image)constructors and deprecatedImageExtensionImpl.Builder(imageId),ImageExtensionImpl.Builder.image(image),ImageExtensionImpl.Builder.bitmap(bitmap), as image/bitmap is required forImageExtensionImpl.Builder; DSL functions are updated to reflect these changes as well. - Deprecate
PointAnnotationManager.iconTextFitandPointAnnotationManager.iconTextFitPaddingin favor ofPointAnnotation.iconTextFitandPointAnnotation.iconTextFitPadding. - Introduce experimental lights API to enable a uniform 3D lighting across the map. Use
Style.addLights3DorStyle.setup3DLightsto enableAmbientandDirectionallight. - Introduce
LineLayer.lineDepthOcclusionFactor,PolylineAnnotationManager.lineDepthOcclusionFactorAPI. - Introduce experimental
Expression.activeAnchorAPI. - Introduce experimental
ModelLayerAPI to render 3D models on the map. - Introduce experimental
MapboxMap.addStyleModel,MapboxMap.removeStyleModel,MapboxMap.hasStyleModelAPIs. - Introduce experimental
LocationPuck3D.modelCastShadows,LocationPuck3D.modelReceiveShadows,LocationPuck3D.modelScaleModeAPIs. Note:LocationPuck3D.modelScaleModeAPI brings behavioral changes for LocationPuck3d scale andmodel-scaleproperty needs to be adjusted to correctly render the puck. - Introduce
Expression.hsl,Expression.hslacolor expression. - Introduce
Expression.measureLightlights configuration property. - Introduce
LineLayer.lineBorderColor,LineLayer.lineBorderWidthAPIs. - Introduce experimental
BackgroundLayer.backgroundEmissiveStrength,CircleLayer.circleEmissiveStrength,FillLayer.fillEmissiveStrength,LineLayer.lineEmissiveStrength,SymbolLayer.iconEmissiveStrength,SymbolLayer.textEmissiveStrengthAPIs. - Introduce experimental
FillExtrusionLayer.fillExtrusionRoundedRoof,FillExtrusionLayer.fillExtrusionEdgeRadius,FillExtrusionLayer.fillExtrusionAmbientOcclusionWallRadius,FillExtrusionLayer.fillExtrusionAmbientOcclusionGroundRadius,FillExtrusionLayer.fillExtrusionAmbientOcclusionGroundAttenuation,FillExtrusionLayer.fillExtrusionFloodLightColor,FillExtrusionLayer.fillExtrusionFloodLightIntensity,FillExtrusionLayer.fillExtrusionFloodLightWallRadius,FillExtrusionLayer.fillExtrusionFloodLightGroundRadius,FillExtrusionLayer.fillExtrusionFloodLightGroundAttenuation,FillExtrusionLayer.fillExtrusionVerticalScaleAPIs. - Introduce new Mapbox 3D style
Style.STANDARDand make it default. - Introduce GeoJSONSource partial update APIs
GeoJsonSource.addGeoJSONSourceFeatures,GeoJsonSource.updateGeoJSONSourceFeatures,GeoJsonSource.removeGeoJSONSourceFeatures.
Bug fixes 🐞
- Fix 3d location layer properties
model-scale-transitionandmodel-rotation-transition, made them non-transitionable. - Fix crash when running animations (e.g. gestures) on Android 14 beta.
- Fix view port not following puck if viewport
bearingoption was set tonulleven though new locations were available.
Dependencies
- Update gl-native to v11.0.0-SNAPSHOT.0608T0508Z.a85336d and common to v24.0.0-SNAPSHOT.0616T0900Z.e0319e0.
- Instantiate OpenGL ES context 3.0, if available, otherwise fallback to 2.0.
- Use EGL 1.4 instead of EGL 1.0.
- Update dependencies :
| Dependency | Before | After |
|---|---|---|
| Android Gradle Plugin | 7.0.4 | 7.4.2 |
| Kotlin | 1.5.31 | 1.7.20 |
| org.jetbrains.kotlin:kotlin-stdlib-jdk7 | 1.5.31 | |
| org.jetbrains.kotlin:kotlin-stdlib-jdk8 | 1.7.20 | |
| Dokka plugin | 1.5.31 | 1.7.20 |
| androidx.core:core-ktx | 1.7.0 | 1.9.0 |
| androidx.appcompat:appcompat | 1.3.0 | 1.6.1 |
| androidx.test:rules | 1.4.0 | 1.5.0 |
| androidx.test:core | 1.4.0 | 1.5.0 |
| androidx.test:runner | 1.4.0 | 1.5.2 |
| androidx.test:orchestrator | 1.4.0 | 1.4.2 |
| androidx.test:monitor | 1.4.0 | 1.6.1 |
| androidx.test.espresso:espresso-core | 3.4.0 | 3.5.1 |
| androidx.test.ext:junit | 1.1.3 | 1.1.5 |
| org.jetbrains.kotlinx:kotlinx-coroutines-core | 1.3.9 | 1.6.1 |
| org.jetbrains.kotlinx:kotlinx-coroutines-test | 1.3.9 | 1.6.1 |
| io.mockk:mockk | 1.12.3 | 1.13.4 |
| io.mockk:mockk-agent-api | 1.12.3 | 1.13.4 |
| io.mockk:mockk-agent-jvm | 1.12.3 | 1.13.4 |
| org.robolectric:robolectric | 4.8.1 | 4.9.2 |
| com.android.tools.lint:lint-api | 30.0.4 | 30.4.2 |
| com.android.tools.lint:lint-checks | 30.0.4 | 30.4.2 |
| com.android.tools.lint:lint | 30.0.4 | 30.4.2 |
| com.android.tools.lint:lint-tests | 30.0.4 | 30.4.2 |
| com.android.tools:testutils | 30.0.4 | 30.4.2 |
| nl.jqno.equalsverifier:equalsverifier | 3.10.1 | 3.14 |
| io.gitlab.arturbosch.detekt:detekt-formatting | 1.20.0 | 1.22.0 |
| composeOptions -> kotlinCompilerExtensionVersion | 1.1.0-beta03 | 1.4.3 |
| androidx.compose:compose-bom | 2023.01.00 | |
| androidx.compose.compiler:compiler | 1.3.2 | |
| com.pinterest:ktlint | 0.39.0 | 0.48.2 |
11.0.0-alpha.1 March 2, 2023
Features ✨ and improvements 🏁
- Enable raster colorization via
raster-colorexpression andRasterLayer.rasterColor,RasterLayer.rasterColorMix,RasterLayer.rasterColorRangelayer properties.
10.15.0 July 27, 2023
Bug fixes 🐞
- Fix a security exception when fine location permission is not granted when using
DefaultLocationProvider. - Fix camera animations jitter noticeable on high zoom levels using location puck following mode.
- Fix view port not following puck if viewport
bearingoption was set tonulleven though new locations were available. - Fix the issue of tiles displaying redundant images during a style switch, when both styles include similarly named sprites.
- Fix crash in offline download when no-content responses are received.
- Fix the issue of rendering sky layers behind the globe when the atmosphere is disabled.
- Resolve the issue with tile rendering when the tile pack's levelling scheme has a maximum zoom level of less than 16, and the camera zoom surpasses the maximum zoom value defined by the tile pack's levelling scheme.
- Fix the HTTP resources expiration time being reset when the Expires header defined the expiration time and the Cache-Control header was present but did not define the expiration time.
- Fix the latency during the style switch of fill extrusion layers that have data-driven paint properties.
- Fix a rounding error when point lies at the edge of the screen by using
rountToIntfor limitingMapboxMap#pixelForCoordinateto the bounds of MapView.
Dependencies
- Update gl-native to v10.15.0 and common to v23.7.0.
10.15.0-rc.1 July 13, 2023
Bug fixes 🐞
- Fix view port not following puck if viewport
bearingoption was set tonulleven though new locations were available. - Fix the issue of tiles displaying redundant images during a style switch, when both styles include similarly named sprites.
- Fix crash in offline download when no-content responses are received.
- Fix the issue of rendering sky layers behind the globe when the atmosphere is disabled.
Dependencies
- Update gl-native to v10.15.0-rc.1 and common to v23.7.0-rc.1.
10.15.0-beta.1 June 29, 2023
Bug fixes 🐞
- Fix a security exception when fine location permission is not granted when using DefaultLocationProvider.
- Fix camera animations jitter noticeable on high zoom levels using location puck following mode.
- Resolve the missing tile rendering issue when the tile pack's leveling scheme has a maximum zoom level of less than 16.
- Fix the issue that HTTP resources expiration time being incorrectly reset, which caused excessive network requests.
- Fix the style change latency for fill extrusion layers(in case the layers have data-driven paint properties) during the style switches.
Dependencies
- Update gl-native to v10.15.0-beta.1 and common to v23.7.0-beta.1.
10.14.1 June 22, 2023
Bug fixes 🐞
- Fix the latency during the style switch of fill extrusion layers that have data-driven paint properties.
Dependencies
- Update gl-native to v10.14.1.
10.14.0 June 14, 2023
Features ✨ and improvements 🏁
- Improve performance of setting puck style properties by removing redundant check if layer / source exists.
- Improve performance of symbol layers with identical or no text.
- Hide line labels with too large an angle between two neighboring glyphs.
- Introduce
MapboxMap.tileCoverandSnapshotter.tileCoverexperimental API to get the tileIDs that cover current map camera.
Bug fixes 🐞
- Fix layer zoom range check so that the layer will be hidden when the zoom equals to layer's max zoom.
- Fixes occasional rendering errors caused by long line layers and vertex data overflow.
- Fix crash when running animations (e.g. gestures) on Android 14 beta.
- Fix image and zoom dependent expression evaluation errors during style switching.
- Avoid re-use of raw icon atlas buffers when images point to the different location in the atlas.
- Fix flickering of symbols on high zoom level.
- Fix ineffective
tilesizesetting inCustomGeometrySourceOptions. Now the generated tiles accurately reflect the specifiedtilesizesetting.
Dependencies
- Update gl-native to v10.14.0 and common to v23.6.0.
10.14.0-rc.1 May 31, 2023
Features ✨ and improvements 🏁
- Introduce
MapboxMap.tileCoverexperimental API to get the tileIDs that cover current map camera.
Bug fixes 🐞
- Fix crash when running animations (e.g. gestures) on Android 14 beta.
- Fix image and zoom dependent expression evaluation errors during style switching.
- Avoid re-use of raw icon atlas buffers when images point to the different location in the atlas.
Dependencies
- Update gl-native to v10.14.0-rc.1 and common to v23.6.0-rc.1.
10.14.0-beta.1 May 17, 2023
Features ✨ and improvements 🏁
- Improve performance of setting puck style properties by removing redundant check if layer / source exists.
- Improve performance of symbol layers with identical or no text.
- Hide line labels with too large an angle between two neighboring glyphs.
Bug fixes 🐞
- Fix layer zoom range check so that the layer will be hidden when the zoom equals to layer's max zoom.
- Fixes occasional rendering errors caused by long line layers and vertex data overflow.
Dependencies
- Update gl-native to v10.14.0-beta.1 and common to v23.6.0-beta.1.
10.13.0 May 05, 2023
Features ✨ and improvements 🏁
- Add overloaded methods to
CameraAnimatorsFactoryallowing to set camera animator owner. - Improve startup performance by calculating the style expressions dependencies lazily.
- Introduce a new APIs
coordinateInfoForPixel(pixel: ScreenCoordinate): CoordinateInfoandcoordinatesInfoForPixels(pixels: List<ScreenCoordinate>): List<CoordinateInfo>which will return record(s) containing bothcoordinateandisOnSurfaceinfo. - Deprecate
Snapshotter.setTileModeandSnapshotter.isInTileMode. - Deprecate
Style.setStyleGeoJSONSourceData(sourceId, data). - Deprecate
isMapLoadedmethod. - Share similar image and glyph atlases across tiles and thus avoid unnecessary textures creation.
- Render single color gradient as solid line.
- Use flat screen coordinate conversion functions with zero exaggeration terrain.
- Deprecate qRF APIs that use specific geometry types, which also are not cancelable.
Bug fixes 🐞
- Fix rare issue in renderer which could freeze the device when bringing the
MapViewback to front. - Fix artefacts caused by a race condition when style layers got updated during pending tiles layout.
- Fix missing return unexpected result in model_loader processing, so the client could be aware of the error.
- Fix text flickering while symbol layer update if text-field contains text-color property.
- Fix 3d location layer properties
model-scale-transitionandmodel-rotation-transition, made them non-transitionable. - Fix raw expression parsing for list literal.
- Fix text flickering while symbol layer update if
text-fieldcontainstext-colorproperty inside the format expression. - Fix a crash when a hillshade bucket was created with disabled terrain, but the terrain got enabled afterwards.
- Fix the crash when identifying if device is connected to WiFi.
- Fix jumpy gestures when external
AndroidGestureManageris added withsetGesturesManager. - Fix a bug that accidentally cleared icon images when
setMemoryBudgetwas used with megabyte values. - Fix handling of Unicode characters in
slice,index-of,inandlengthexpressions.
Dependencies
- Update gl-native to v10.13.1 and common to v23.5.0.
10.13.0-rc.1 April 20, 2023
Features ✨ and improvements 🏁
- Add overloaded methods to
CameraAnimatorsFactoryallowing to set camera animator owner. - Improve startup performance by calculating the style expressions dependencies lazily.
- Introduce a new APIs
coordinateInfoForPixel(pixel: ScreenCoordinate): CoordinateInfoandcoordinatesInfoForPixels(pixels: List<ScreenCoordinate>): List<CoordinateInfo>which will return record(s) containing bothcoordinateandisOnSurfaceinfo.
Bug fixes 🐞
- Fix 3d location layer properties
model-scale-transitionandmodel-rotation-transition, made them non-transitionable. - Fix raw expression parsing for list literal.
- Fix text flickering while symbol layer update if
text-fieldcontainstext-colorproperty inside the format expression.
Dependencies
- Update gl-native to v10.13.0-rc.1 and common to v23.5.0-rc.1.
10.13.0-beta.1 April 05, 2023
Features ✨ and improvements 🏁
- Deprecate
Snapshotter.setTileModeandSnapshotter.isInTileMode. - Deprecate
Style.setStyleGeoJSONSourceData(sourceId, data). - Use flat screen coordinate conversion functions with zero exaggeration terrain.
- Share similar image and glyph atlases across tiles and thus avoid unnecessary textures creation.
- Render single color gradient as solid line.
Bug fixes 🐞
- Fix the crash when identifying if device is connected to WiFi.
- Fix a crash when a hillshade bucket was created with disabled terrain, but the terrain got enabled afterwards.
Dependencies
- Update gl-native to v10.13.0-beta.1 and common to v23.5.0-beta.1.
10.12.1 March 28, 2023
Bug fixes 🐞
- Fix missing data id in
source-data-loadedevent for empty GeoJSON data.
Dependencies
- Update gl-native to v10.12.1.
10.12.0 March 23, 2023
Features ✨ and improvements 🏁
- Add
data-idargument toGeoJsonSourcedata update methods.data-idis later attached to theSourceDataLoadedEventDataevent and allows to track the specificGeoJsonSourceupdate. - Reduce line gradient texture size if there is no color change.
Bug fixes 🐞
- Fix regression from
v10.11.0when applying geojson from loaded style to the new style could cause the crash or no data applied. - Fix regression from
v10.11.0when applying geojson data was not working when no style was available. - Do not fail on parsing vector tile when there are duplicate keys encoded in the tile data.
- Fix a bug where camera change event is not emitted when using free camera options to set camera.
- Fix network usage for the case when multiple access tokens are used.
- Fix rendering glitches for symbols when animating the map caused by image atlas interfering.
- Fix set geojson source data with null value.
- Interrupt blocking disk cache database operations on application exit, so that the application does not hang.
- Fix a bug where continuously dragging and changing zoom would lead to either very slow or very fast map dragging.
- Avoid generation of the unneeded glyph textures.
- Fix rendering errors when the closing point is missing in GeoJSON polygon features.
- Fix a bug where taking consecutive snapshots had missing tiles.
- Fix a bug where fill extrusions would flicker when crossing a certain zoom threshold.
Dependencies
- Update gl-native to v10.12.0 and common to v23.4.0.
10.11.2 March 10, 2023
Bug fixes 🐞
- Fix missing terrain on some GPUs (e.g. Mali). (2038)
Dependencies
- Update gl-native to v10.11.2. (2038)
10.12.0-rc.1 March 09, 2023
Bug fixes 🐞
- Fix regression from
v10.11.0when applying geojson data was not working when no style was available. - Interrupt blocking disk cache database operations on application exit so that the application does not hang.
- Fix a bug where continuously dragging and changing zoom would lead to either very slow or fast map dragging.
- Fix missing terrain on some GPUs (e.g. Mali).
Dependencies
- Update gl-native to v10.12.0-rc.1 and common to v23.4.0-rc.1.
10.12.0-beta.1 February 22, 2023
Features ✨ and improvements 🏁
- Add
data-idargument toGeoJsonSourcedata update methods.data-idis later attached to theSourceDataLoadedEventDataevent and allows to track the specificGeoJsonSourceupdate. (1991) - Reduce line gradient texture size if there is no color change.
Bug fixes 🐞
- Avoid generation of the unneeded glyph textures.
- Fixes rendering errors when the closing point is missing in GeoJSON polygon features.
- Fix a bug where taking consecutive snapshots had missing tiles.
- Fix a bug where fill extrusions would flicker when crossing a certain zoom threshold.
Dependencies
- Update gl-native to v10.12.0-beta.1 and common to v23.4.0-beta.1.
10.10.2 February 16, 2023
Bug fixes 🐞
- [tile store] Remove token from TileStore Logs. (2011)
Dependencies
- Update common to v23.2.3. (2011)
10.11.0 February 09, 2023
Features ✨ and improvements 🏁
- Skip redundant
MapboxMap.setCameraupdates inCameraAnimationsPlugin. (1909) - Improve performance by setting geojson data directly. (1920)
- Fix viewport hang when transition to
FollowPuckViewportStateand no new location update is available. (1929) - Avoid unneeded tiles relayout on style change. (1984)
- Enable the usage of expressions in array values during style parsing, where the member expressions in the array is evaluated to the same type. (1984)
- Slightly improve quality and performance of the terrain. (1984)
- Improve performance for style switch use cases by avoiding unneeded tiles re-layout. (1984)
Bug fixes 🐞
- Fix a bug where
flyToanimation request invalid tiles from map engine. (1949) - Deprecate
patternanddashtransition properties for layer (e.g.BackgroundLayer.backgroundPatternTransition,FillExtrusionLayer.fillExtrusionPatternTransition,FillLayer.fillPatternTransition,LineLayer.lineDasharrayTransition,LineLayer.linePatternTransition, ...). (1941) - Fix terrain tiles missing issue when running in the emulator and some android devices. (1953)
- Fix wrong
onLongTouchevent detected on any map gesture after clicks on ViewAnnotation. (1954) - Fix a known issue where
NullPointerExceptionwas thrown when last location was not available. (1984) - Fix flickering issues for the symbols that allow overlap (have text(icon)-allow-overlap: true) with skipping fade-in animation for them. (1984)
- Fix data queueing issue when calling API 'setStyleGeoJSONSourceData'. (1984)
- Fix flickering terrain on high pitched views. (1984)
- Clamp inputs in DEMData::get() to prevent OOB Access. (1984)
- Fix asset file source threading model - do not use legacy RunLoop, thus do not use ALooper and get rid of an extra thread. (1984)
- Fix text visualization when in orthographic mode. (1984)
- Fix terrain elevation when a padded dem source is used. (1984)
- Fixes visible tile borders when msaa enabled. (1984)
- Fix distance-to-center filtering of symbols when terrain is enabled. (1984)
- Fix color transitions in model ligthing. (1984)
- Fix terrain placement for model layer when model scale is set to zero. (1984)
- Fix geometry tile model layer paint property transition. (1984)
- Fix camera bumpiness at the beginning of a drag operation when terrain is enabled. (1984)
- Fix disappearing tiles when terrain with a high exaggeration is enabled. (1984)
- Fix line-border-color when used with line-trim-offset. (1984)
- Fixes an issue when allow-overlap, ignore-placement , and map rotation-alignment of icon breaks the rendering of symbols on the globe. (1984)
- Mitigate symbol flickering on source data change during camera animation. (1984)
- Mitigate OOM caused by Snapshotter API usage. (1984)
- Fixes rare crashes during render feature queries, if the features are located close to each other. (1984)
- Fix an issue where the camera would start flickering during subsequent calls to
Map::jumpTo/Map::easeTowith terrain enabled.. (1984) - Fix redundant snapshot capturing that caused excessive memory usage. (1984)
- Fix incorrect resource type being specified map loading error event data. (1984)
- Original gesture settings should be maintained after map operations (such as panning the map) complete. (1989)
Dependencies
- Update gl-native to v10.11.1, common to v23.3.1. (1984)
10.11.0-rc.1 January 26, 2023
Features ✨ and improvements 🏁
- Improve performance for style switch use cases by avoiding unneeded tiles re-layout. (1953)
Bug fixes 🐞
- Fix a bug where
flyToanimation request invalid tiles from map engine. (1949) - Deprecate
patternanddashtransition properties for layer (e.g.BackgroundLayer.backgroundPatternTransition,FillExtrusionLayer.fillExtrusionPatternTransition,FillLayer.fillPatternTransition,LineLayer.lineDasharrayTransition,LineLayer.linePatternTransition, ...). (1941) - Fix terrain tiles missing issue when running in the emulator and some android devices. (1953)
- Fix wrong
onLongTouchevent detected on any map gesture after clicks on ViewAnnotation. (1954)
Dependencies
- Update gl-native to v10.11.0-rc.1 and common to v23.3.0-rc.1. (1953)
Known issues
- If last location is not available,
LocationEnginewill throw aNullPointerException.
10.11.0-beta.1 January 11, 2023
Features ✨ and improvements 🏁
- Skip redundant
MapboxMap.setCameraupdates inCameraAnimationsPlugin. (1909) - Improve performance by setting geojson data directly. (1920)
- Update license to reflect latest version of the Mapbox TOS. (1927)
- Fix viewport hang when transition to
FollowPuckViewportStateand no new location update is available. (1929) - Optimize shadow rendering memory use and performance. (1934)
- Enable the usage of expressions in array values during style parsing, where the member expressions in the array is evaluated to the same type. (1934)
- Slightly improve quality and performance of the terrain. (1934)
Bug fixes 🐞
- Fix crash due to invalid distance when panning the map. (1906)
- Fix asset file source threading model. (1934)
- Fix terrain elevation when a padded dem source is used. (1934)
- Fix distance-to-center filtering of symbols when terrain is enabled. (1934)
- Fix camera bumpiness at the beginning of a drag operation when terrain is enabled. (1934)
- Fix disappearing tiles when terrain with a high exaggeration is enabled. (1934)
- Mitigate symbol flickering on source data change during camera animation. (1934)
- Fixes rare crashes during render feature queries, if the features are located close to each other. (1934)
- Fix redundant snapshot capturing that caused excessive memory usage. (1934)
- Fixes an issue when allow-overlap, ignore-placement , and map rotation-alignment of icon breaks the rendering of symbols on the globe. (1934)
- Mitigate symbol flickering on source data change during camera animation. (1934)
- Mitigate OOM caused by Snapshotter API usage. (1934)
- Fix an issue where the camera would start flickering during subsequent calls to
Map::jumpTo/Map::easeTowith terrain enabled. (1934)
Dependencies
- Update gl-native to v10.11.0-beta.1 and common to v23.3.0-beta.1. (1934)
Known issues
- Using
patternanddashtransition properties for layer (e.g.BackgroundLayer.backgroundPatternTransition,FillExtrusionLayer.fillExtrusionPatternTransition,FillLayer.fillPatternTransition,LineLayer.lineDasharrayTransition,LineLayer.linePatternTransition, ...) will result in an invalid layer.
10.10.1 January 25, 2023
Features ✨ and improvements 🏁
- Add custom header x-mapbox-app-info to requests. (1957)
Bug fixes 🐞
- Fix a bug where taking consecutive snapshots had missing tiles. (1957)
Dependencies
- Update gl-native to v10.10.1 and common to v23.2.2. (1957)
10.10.0 December 07, 2022
Features ✨ and improvements 🏁
- Introduce view annotation
ViewAnnotationManager.annotationsAPI to access list of added view annotations. (1751) - Introduce view annotation
ViewAnnotationManager.cameraForAnnotationsAPI to get camera options for given view annotations list. (1753) - Unify the
margin/translationWidgetAPIs into theWidgetPosition.offset, renameWidgetPosition.horizontal/WidgetPosition.verticaltoWidgetPosition.horizontalAlignment/WidgetPosition.verticalAlignment; Deprecate the original constructors andsetTranslationAPIs. (1782) - Add API for removing atmosphere. (1841)
- Introduce
MapTelemetry.getUserTelemetryRequestStateAPI. (1877) - Eliminate tiles re-creation and re-layout on zooming map with globe, when the camera is trespassing the zoom projection border. (1891)
- Avoid tiles re-layout on enabling terrain with zero exaggeration. (1891)
- Added API to enable/disable rendering of world copies in mercator mode. (1891)
- Improve symbol filtering performance when
distance-from-cameraandpitchexpressions are used. (1891) - Reduce number of operations when terrain is used with zero exaggeration. (1891)
Bug fixes 🐞
- Fix an issue when touch events didn't pass through clickable view annotations. (1745)
- Trigger repaint after
BitmapWidgetis updated. (1797) - Fix a crash after removing the view annotation if view has an attached animation or transition. (1831)
- Emit the last indicator state when new listeners are added to the location component. (1827)
- Fix an issue where queried symbol features did not contain the associated feature state. (1836)
- Throw understandable exception when using widgets with the
MapVieworMapSurfaceand not specifyingMapInitOptions.MapOptions.contextMode = ContextMode.SHAREDpreventing hard-catching runtime crashes or artifacts. (1834) - Fix an issue where location updates were not provided on correct thread/looper. (1836)
- Dispatch location updates as a location event when the app is moving to background. (1836)
- Fix
LocationEngineto support multiple concurrent clients. (1836) - Fix immediate camera animation on API level 23 or below. (1842)
- Fix loss of
Widgetduring background/foreground transition. (1864) - Fix displaying MapView in Android Studio Layout Preview. (1881)
- Fix a bug where
ViewAnnotationManager.cameraForAnnotationsAPI doesn't return correct camera bounds. (1861) - Handle OOB when getting DEM Data (1891)
- Fix a rare precision issue with symbol and circle layer occlusion when terrain is enabled. (1891)
- Fixes a rare crash caused by a race condition during gesture handling. (1891)
- Disable location indicator occlusion testing with the terrain when exaggeration is set to 0. This fixes occasional location indicator disappearance. (1891)
- Fix an issue where queried symbol features did not contain associated feature state. (1891)
- Clear geojson tiles after the source is updated with empty features in order to eliminate "phantom tile" artefacts and to obviate extra work for keeping empty tiles. (1891)
- Eliminate duplicated tile async upload requests - fix a race condition causing a tile rendering the previous layout result. (1891)
- Truncate long single line text in symbol layers to prevent rendering artifact. (1891)
- Fixes an issue when the mixed usage of patterns and icons caused bleeding of textures. (1891)
- Fixes visible tile borders when MSAA enabled. (1891)
- Fix LOD and prevent from flickering on enabling terrain with zero exaggeration. (1891)
- Setting empty value for a style layer filter now clears the filter. (1891)
- Fixes rendering artifacts near tile borders when using terrain with zero exaggeration. (1891)
- Fixes fog rendering when terrain is used with zero exaggeration. (1891)
- Fix
distance-to-centerfiltering of symbols when terrain is enabled. (1891) - Improved
cameraForCoordinateresult quality with pitch and with terrain. (1891) - Fix a crash on Android 10 and below, when Google Play Location Service is not present. (1898)
Dependencies
- Update gl-native to v10.10.0 and common to v23.2.1. (1891 1898)
- Remove
mapbox-android-coredependency, it is now part of Mapbox Common library. NOTE:: You need to remove any explicit dependency declaration tocom.mapbox.mapboxsdk:mapbox-android-core:<version>from the project to avoid duplicated class definition errors related to location APIs. (1836)
10.10.0-rc.1 November 18, 2022
Features ✨ and improvements 🏁
- Improve symbol filtering performance when distance-from-camera and pitch expressions are used. (1836)
- Add API for removing atmosphere. (1841)
Bug fixes 🐞
- Trigger repaint after
BitmapWidgetis updated. (1797) - Fix a crash after removing the view annotation if view has an attached animation or transition. (1831)
- Emit the last indicator state when new listeners are added to the location component. (1827)
- Fix an issue where queried symbol features did not contain the associated feature state. (1836)
- Clear geojson tiles after the source is updated with empty features in order to eliminate "phantom tile" artifacts and to obviate extra work for keeping empty tiles. (1836)
- Fix a regression from v10.10.0-beta.1 release, the BitmapWidget.setTranslation API should offset relative to its original position. (1833)
- Throw understandable exception when using widgets with the
MapVieworMapSurfaceand not specifyingMapInitOptions.MapOptions.contextMode = ContextMode.SHAREDpreventing hard-catching runtime crashes or artifacts. (1834) - Fix an issue where location updates were not provided on correct thread/looper. (1836)
- [telemetry] Dispatch location updates as a location event when the app is moving to background. (1836)
- Fix
LocationEngineto support multiple concurrent clients. (1836) - Fix immediate camera animation on API level 23 or below. (1842)
Dependencies
- Update gl-native to v10.10.0-rc.1 and common to v23.2.0-rc.3. (1836)
- Remove
mapbox-android-coredependency, it is now part of Mapbox Common library. NOTE:: You need to remove any explicit dependency declaration tocom.mapbox.mapboxsdk:mapbox-android-core:<version>from the project to avoid duplicated class definition errors related to location APIs. (1836)
10.9.1 November 7, 2022
Bug fixes 🐞
- Handle OOB when getting DEM Data. (#1808)
10.10.0-beta.1 November 03, 2022
Features ✨ and improvements 🏁
- Introduce view annotation
ViewAnnotationManager.annotationsAPI to access list of added view annotations. (1751) - Introduce view annotation
ViewAnnotationManager.cameraForAnnotationsAPI to get camera options for given view annotations list. (1753) - Eliminate tiles re-creation and re-layout on zooming map with globe, when the camera is trespassing the zoom projection border. (1791)
- Avoid tiles re-layout on enabling terrain with zero exaggeration. (1791)
- Unify the
margin/translationWidgetAPIs into theWidgetPosition.offset, renameWidgetPosition.horizontal/WidgetPosition.verticaltoWidgetPosition.horizontalAlignment/WidgetPosition.verticalAlignment; Deprecate the original constructors andsetTranslationAPIs. (1782) - Add APIs to enable/disable rendering of world copies. (1794, 1791)
Bug fixes 🐞
- Fix an issue when touch events didn't pass through clickable view annotations. (1745)
- Handle OOB when getting DEM Data. (1791)
- Fix a rare precision issue with symbol and circle layer occlusion when terrain is enabled. (1791)
- Fixes a rare crash caused by a race condition during gesture handling. (1791)
- Disable location indicator occlusion testing with the terrain when exaggeration is set to 0. This fixes occasional location indicator disappearance. (1791)
- Exclude map disk cache files from cloud backups. (1791)
Dependencies
- Update gl-native to v10.10.0-beta.1 and common to v23.2.0-beta.1. (1791)
10.9.0 October 21, 2022
Features ✨ and improvements 🏁
- Rendering performance improvements for fast paced camera changes. (1760)
- Eliminate tiles re-creation and re-layout on zooming map with globe, when the camera is trespassing the zoom projection border. (1729)
- Deprecate gesture settings
increaseRotateThresholdWhenPinchingToZoomproperty. (1632) - Enable asynchronous tile uploader by default to improve animation performance. (1679)
- Vector tiles without symbols are not hold for fade-out animation so that less amount of vector tiles are managed at a time. (1679)
- Add support to set location puck opacity. (1659)
- Support
pitchanddistanceFromCenterfilters in symbol layers. (1662) - Migrate telemetry APIs from mobile-events-android to common SDK implementation. (1672)
Bug fixes 🐞
- Fix frequent layout invalidation caused by view annotations calling
View.bringToFront(). (1744) - Fix flickering of vertically shifted line labels on style change, caused by the wrong initial placement. (1760)
- Fix location indicator rendering as a rectangle on low zoom levels. (1760)
- Fix crash caused by using of invalid paint property binders. (1760)
- Fix "phantom tiles" artefacts after GeoJSON source update when asynchronous tile loading is enabled. (1760)
- Fix a bug in cameraForGeometry when called on a map with padding set. (1760)
- Fix scale bar text being cut. (1716)
- Fix possible crash when adding terrain using Style DSL after consecutive style changes. (1717)
- Fix scale bar text overlapping. (1728)
- Fix issue where
Widgetis not immediately rendered when added to theMapView. (1708) - Mitigate symbol flickering on zooming out globe map. (1729)
- Fix random crash on tiles update when asynchronous uploading is enabled. (1729)
- Make telemetry a single instance. Avoids module recreation when coming from background. (#1695)
- Fix scale bar truncated at high zoom levels near the poles. (1620)
- Fix broken view annotation positioning when marking them
View.INVISIBLEand then makingView.VISIBLE. (1616) - Snap puck to north if
puckBearingEnabledis set to false. (1635) - Preserve cached properties if applied to the layer before during the
Style#getLayercall. (1622) - Fix a
NullPointerExceptioninStandardGestureListener, whereMotionEventshould be nullable. (1645), (1677) - Fix incorrect
MapViewdimensions after background orientation change. (1658) - Fix wrong
BitmapWidgetposition when usingWidgetPosition.Horizontal.CENTERorWidgetPosition.Vertical.CENTERproperty. (1651) - Fix pixel flickering between tiles on darker styles in globe view. (1679)
- Fix incorrect shading of rounded corners in fill extrusions when ambient occlusion and/or shadow is enabled. (1679)
- Fix shadows when the light radial coordinate is zero. (1679)
- Location indicator layer is occluded by terrain to align rendering behavior with other location indicator rendering types. (1679)
- Symbol flickering after runtime styling caused by using outdated symbol placement on updated symbol buckets. (1679)
- Allow Light intensity and Light shadow intensity to accept expressions when using setStyleLight API call. (1679)
- Fix a bug in
cameraForGeometrywhen called on a map with padding set. (1679) - Throw an exception with the meaningful stack trace when constructing
Valuefrom an infinite or NaN number. (1681)
Dependencies
- Update mapbox-gestures-android dependency to v0.8.0. (1645)
- Update gl-native to v10.9.0 and common to v23.1.1. (1760)
10.9.0-rc.1 October 07, 2022
Features ✨ and improvements 🏁
- Eliminate tiles re-creation and re-layout on zooming map with globe, when the camera is trespassing the zoom projection border. (1729)
Bug fixes 🐞
- Fix scale bar text being cut. (1716)
- Fix possible crash when adding terrain using Style DSL after consecutive style changes. (1717)
- Fix scale bar text overlapping. (1728)
- Fix issue where
Widgetis not immediately rendered when added to theMapView. (1708) - Fix "phantom tiles" artefacts after GeoJSON source update when asynchronous tile loading is enabled. (1729)
- Mitigate symbol flickering on zooming out globe map. (1729)
- Fix random crash on tiles update when asynchronous uploading is enabled. (1729)
- Fix a crash when Google location service is started in background but stopped in foreground. (1729)
- Fix an issue where mock field is missing from the LocationEngine updates. (1729)
Dependencies
- Update gl-native to v10.9.0-rc.1 and common to v23.1.0-rc.2. (1729)
10.8.1 September 30, 2022
Bug fixes 🐞
- Fix incorrect
MapViewdimensions after background orientation change. (1658) - Throw an exception with the meaningful stacktrace when constructing
Valuefrom an infinite or NaN number. (1681) - Make telemetry a single instance. Avoids module recreation when coming from background. (1695)
- Fix a potential style load error when non-ASCII characters are used in the version name, by escaping non US ASCII characters in user-agent header. (1709)
Dependencies
- Bump common to v23.0.1. (1709)
10.9.0-beta.2 September 28, 2022
Bug fixes 🐞
- Make telemetry a single instance. Avoids module recreation when coming from background. (#1695)
- Fix an issue where location engine doesn't produce bearing/accuracy/speed information with the location updates. (1696)
Dependencies
- Bump common sdk to v23.1.0-beta.2. (1696)
10.9.0-beta.1 September 22, 2022
Features ✨ and improvements 🏁
- Deprecated gesture settings
increaseRotateThresholdWhenPinchingToZoomproperty. (1632) - Enable asynchronous tile uploader by default to improve animation performance. (1679)
- Vector tiles without symbols are not hold for fade-out animation so that less amount of vector tiles are managed at a time. (1679)
- Add support to set location puck opacity. (1659)
- Support
pitchanddistanceFromCenterfilters in symbol layers. (1662) - Migrated telemetry APIs from mobile-events-android to common SDK implementation. (1672)
Bug fixes 🐞
- Fix scale bar truncated at high zoom levels near the poles. (1620)
- Fix broken view annotation positioning when marking them
View.INVISIBLEand then makingView.VISIBLE. (1616) - Snap puck to north if
puckBearingEnabledis set to false. (1635) - Preserve cached properties if applied to the layer before during the
Style#getLayercall. (1622) - Fix a
NullPointerExceptioninStandardGestureListener, whereMotionEventshould be nullable. (1645), (1677) - Fix incorrect
MapViewdimensions after background orientation change. (1658) - Fix wrong
BitmapWidgetposition when usingWidgetPosition.Horizontal.CENTERorWidgetPosition.Vertical.CENTERproperty. (1651) - Fix pixel flickering between tiles on darker styles in globe view. (1679)
- Fix incorrect shading of rounded corners in fill extrusions when ambient occlusion and/or shadow is enabled. (1679)
- Fix shadows when the light radial coordinate is zero. (1679)
- Location indicator layer is occluded by terrain to align rendering behavior with other location indicator rendering types. (1679)
- Symbol flickering after runtime styling caused by using outdated symbol placement on updated symbol buckets. (1679)
- Allow Light intensity and Light shadow intensity to accept expressions when using setStyleLight API call. (1679)
- Fix a bug in
cameraForGeometrywhen called on a map with padding set. (1679) - Throw an exception with the meaningful stack trace when constructing
Valuefrom an infinite or NaN number. (1681)
Dependencies
- Update mapbox-gestures-android dependency to v0.8.0. (1645)
- Update gl-native to v10.9.0-beta.1 and common to v23.1.0-beta.1. (1679)
10.8.0 September 7, 2022
Features ✨ and improvements 🏁
- Introduce a callback to be invoked when the device compass sensors need to be re-calibrated. (1513)
- Add support for
LocationComponentSettingsInterface.pulsingMaxRadiusto follow location's accuracy radius. (1561) - Avoid map content disappearing on the sides of the screen when LOD is enabled. (1650)
Bug fixes 🐞
- Support altitude interpolation in location component, and pass through GPS altitude information from the DefaultLocationProvider. (1478)
- Fix edge cases for renderer that could result in map not rendered. (1538)
- Fix onAnnotationDragStarted event is still fired when annotation is not draggable. (1552)
- Fix camera flying away when pitching. (1560)
- Deliver style to the plugin registry on map start if a new one was loaded after map stop. (1558)
- Fix default viewport bearing transition doesn't follow shortest path. (1541)
- Fix
OnFpsChangedListenerlistener to count number of frames rendered over the last second instead of immediate time for render call. (1477) - Fix
MapView.setMaximumFpsmethod to apply exact FPS value for rendering the map. (1477) - Fix Android memory leak when destroying platform view annotation manager. (1568)
- Fix style getters for terrain, light and atmosphere resetting properties. (1573)
- Fix possible ANR when destroying renderer. (1567)
- Fix
MapSurface#surfaceChangedto update dimensions for plugins. (1575) - Try recreate EGL surface when it throws exception. (1589)
- Fix
MapboxMapextension plugin functions throwing exceptions. (1591) - Fix concurrent modification exception when using widgets. (1597)
- User-specified minimum and maximum zoom now correctly adjusted for map size. (1650)
- Avoid placement of line labels with overlapping glyphs. Fix collision algorithm for the line labels with vertical shift. (1650)
- Fix flickering when a vector layer is added on top of a raster layer. (1650)
- Fix a rare case when black rectangles appear instead of the images of symbol layers. (1650)
- Fix tiles disappearing when high pitch is used and atmosphere is turned on and off. (1650)
- Fixes an issue which prevents the usage of tile cache when changing zoom levels. (1650)
- Relax LOD requirements for maps with insets and zero terrain exaggeration. (1650)
- Make CameraManager.setCamera method exception free. (1650)
- Fix black holes in the globe view when edge insets are used. (1650)
- Fix elevation of pole geometry when exaggerated terrain is used. (1650)
- Fix a bug in cameraForGeometry returning incorrect camera options when pitch > 0. (1650)
Dependencies
- Bump gl-native to v10.8.0, common to v23.0.0. (1650)
10.8.0-rc.1 August 24, 2022
Bug fixes 🐞
- Try recreate EGL surface when it throws exception. (1589)
- Fix
MapboxMapextension plugin functions throwing exceptions. (1591) - Fix concurrent modification exception when using widgets. (1597)
- Relax LOD requirements for maps with insets and zero terrain exaggeration, leading to more content shown in easily readable map areas. (1623)
- Make CameraManager.setCamera method exception free. In cases when incorrect CameraOptions are provided, error would be logged. (1623)
- Fix black holes in the globe view when edge insets are used. (1623)
Dependencies
Bump gl-native to v10.8.0-rc.1 and common to v23.0.0-rc.2. (1623)
10.8.0-beta.1 August 11, 2022
Features ✨ and improvements 🏁
- Introduce a callback to be invoked when the device compass sensors need to be re-calibrated. (1513)
- Add support for
LocationComponentSettingsInterface.pulsingMaxRadiusto follow location's accuracy radius. (1561)
Bug fixes 🐞
- Support altitude interpolation in location component, and pass through GPS altitude information from the DefaultLocationProvider. (1478)
- Fix edge cases for renderer that could result in map not rendered. (1538)
- Fix onAnnotationDragStarted event is still fired when annotation is not draggable. (1552)
- Fix camera flying away when pitching. (1560)
- Deliver style to the plugin registry on map start if a new one was loaded after map stop. (1558)
- Fix default viewport bearing transition doesn't follow shortest path. (1541)
- Fix
OnFpsChangedListenerlistener to count number of frames rendered over the last second instead of immediate time for render call. (1477) - Fix
MapView.setMaximumFpsmethod to apply exact FPS value for rendering the map. (1477) - Fix a bug in cameraForGeometry returning incorrect camera options when pitch > 0. (1568)
- Fix Android memory leak when destroying platform view annotation manager. (1568)
- Fix style getters for terrain, light and atmosphere resetting properties. (1573)
- Fix possible ANR when destroying renderer. (1567)
- Fix elevation of pole geometry when exaggerated terrain is used. (1574)
- Fix
MapSurface#surfaceChangedto update dimensions for plugins. (1575)
Dependencies
Bump gl-native to v10.8.0-beta.2 and common to v23.0.0-beta.1. (1574, 1568)
10.7.0 July 29, 2022
Changes since Mapbox Maps SDK for Android 10.6.0
Breaking changes ⚠️
- Remove deprecated
FollowPuckViewportStateOptions.animationDurationMsfrom experimental viewport plugin. (1421) - Remove experimental ModelLayer APIs. (1545)
Features ✨ and improvements 🏁
- Optimise the bearing update frequency for the location puck animator. (1398)
- Use
orientationmodel source property to update the 3D puck's bearing, as it is more efficient than updating themodel-rotationlayer property. (1407) - Optimize
MapboxMap.loadStyle()to apply images and models earlier. 1378 - Remove
MapboxExperimentalannotation from viewport plugin and promote viewport plugin as stable API. (1425) - Introduce
addRendererSetupErrorListener/removeRendererSetupErrorListenermethods forMapViewandMapSurfaceto listen to renderer setup errors and give opportunity to control some edge cases. (1427) - Introduce transition properties for atmosphere and terrain. (1451)
- Enable main thread checking on the map/style object when running applications in debug build. This utility class will crash the application if these objects are accessed from a worked thread. It's required to call these object functions on the main thread, otherwise you can hit edge case crashes. This configurations is advised but can be opted out with a Manifest metadata entry of
com.mapbox.maps.ThreadCheckerand corresponding false value. (1316). - Introduce view annotation
ViewAnnotationManager.setViewAnnotationUpdateMode/ViewAnnotationManager.getViewAnnotationUpdateModeAPI with following synchronization modes: MAP_SYNCHRONIZED (used by default) and MAP_FIXED_DELAY. (1415) - Introduce
FillExtrusionLayer.fillExtrusionAmbientOcclusionIntensityandFillExtrusionLayer.fillExtrusionAmbientOcclusionRadiusproperties for FillExtrusionLayer. (1458) - Introduce
PointAnnotation.textLineHeightand deprecatedPointAnnotationManager.textLineHeight, astext-line-heightis data-driven property now. (1458) - Method
MapboxMap.cameraForCoordinatesnow allows to ignore edges of framing box dynamically depending on the position of the principal point of the camera. (1543) - Synchronize volatile data (like traffic tiles) in multi-map environment. Decrease network traffic. (1543)
- Make uploading of large graphics data asynchronous to improve rendering speed in particular on zooming in/out. (1543)
- Reuse single index buffer in symbol layer rendering. (1543)
- Use shared index buffers per tile to reduce the time spent in the upload pass. (1543)
- Reduce geometry on globe tile to increase rendering performance. (1543)
- Improve rendering performance with deleting layer render data on a worker thread. (1543)
- The deprecated Settings API is using the same non-persistent storage as the SettingsService API from Common SDK so that all settings consolidated in a single place. (1543)
- Support using
line-trim-offsetproperty with pure line color. (1543) - Render cache and terrain can now have mipmapping enabled to reduce aliasing. (1543)
- Fast ambient occlusion support for fill extrusion layer. (1543)
- Add API to create tileset descriptor from a tilesets list. (1543)
- Add API
OfflineManager::createTilesetDescriptor(TileDescriptorOptionsForTilesets)to create tileset descriptor from a tilesets list. (1543)
Bug fixes 🐞
- Fix lifecycle edge cases not being handled properly by introducing internal
ViewLifecycleOwnerto have granular control over MapView's lifecycle. (1330) - Fix an issue when
literalarray expression is used as output inside thematchexpression. (1444) - Fix skipping gesture updates resulting in slower gestures on low-end devices. (#1440)
- Fix excessive logs appearing sometimes after
onStoplifecycle event. (1527) - Fix
com.mapbox.maps.MapboxMapExceptioncrash on style load. (1532) - Avoid NaN when converting screen coordinates to geographical coordinates executed as part of gesture. 1491
- Remove android.permission.WAKE_LOCK permission from the SDK. (1494)
- Fixes a bug when map aligned symbol layers are placed on top of other layers if draping is active. (1543)
- Fix tile flickering with globe on rapid zooming in/out. (1543)
- Fixed
cameraForCoordinateBoundsmethod returning different values for the same input. (1543) - Fix setting
exaggeration-transitionproperty viasetStyleTerrainAPI. (1543) - Fix SDK fragment format in turnstile user agent. (1543)
- Fix view annotation occlusion issue when terrain enabled. (1543)
- Fix symbol flickering issue when
textAllowOverlaporiconAllowOverlapis true. (1543) - Fixes rendering issues with the globe on unsupported hardware by falling back to mercator projection. (1543)
- Fixed feature states not being applied on new tiles when zoom doesn't change. (1543)
- Disable MapBuffer OpenGL extension on PowerVR SGX 544MP GPUs to fix incorrect usage of unimplemented methods. (1543)
- Fix incorrect image source rendering with terrain enabled. (1543)
- Fix possible crash bug in image processing. (1543)
- Fix some cpu-updated symbols being invisible in globe view. (1543)
- Fix zoom constraining issue when the input
maxZoomis smaller than the currentminZoomvalue. (1543) - Fix crash on calling Query Rendered Features API from renderer thread before initialising the renderer. (1543)
- Fix tile pre-fetching for the globe map projection. (1543)
- Relayout tiles after recovering from Metal rendering errors. (1543)
- Fix a bug where changing size of the map would lead map center getting changed as well. (1543)
Dependencies
- Bump telemetry to v8.1.5. (1494) Also bumps WorkManager 2.7.1 that enforces compileSdk 31 or newer.
- Bump gl-native to v10.7.0, common to 22.1.0. (1543)
10.7.0-rc.1 July 14, 2022
Features ✨ and improvements 🏁
- Reuse single index buffer in symbol layer rendering. (1497)
- Use shared index buffers per tile to reduce the time spent in the upload pass. (1497)
Bug fixes 🐞
- Remove android.permission.WAKE_LOCK permission from the SDK. (1494)
- Fix setting 'exaggeration-transition' property via 'setStyleTerrain' API. (1497)
- Fix SDK fragment format in turnstile useragent. (1497)
- Fix view annotation occlusion issue when Terrain enabled. (1497)
- Fix symbol flickering issue when 'textAllowOverlap' or 'iconAllowOverlap' is true. (1497)
- Fixes rendering issues with the globe on unsupported hardware by falling back to mercator projection. (1497)
- Fixed feature states not being applied on new tiles when zoom doesn't change. (1497)
- Disable MapBuffer OpenGL extension on PowerVR SGX 544MP GPUs to fix incorrect usage of unimplemented methods. (1497)
- Avoid NaN when converting screen coordinates to geographical coordinates executed as part of gesture. #1491
Dependencies
- Bump telemetry to v8.1.5. (#1494) Also bumps WorkManager 2.7.1 that enforces compileSdk 31 or newer.
- Bump gl-native to v10.7.0-rc.1, common to 22.1.0-rc.1. (#1497)
10.7.0-beta.1 June 29, 2022
Breaking changes ⚠️
- Remove deprecated
FollowPuckViewportStateOptions.animationDurationMsfrom experimental viewport plugin. (1421)
Features ✨ and improvements 🏁
- Optimise the bearing update frequency for the location puck animator. (1398)
- Use
orientationmodel source property to update the 3D puck's bearing, as it is more efficient than updating themodel-rotationlayer property. (1407) - Optimize
MapboxMap.loadStyle()to apply images and models earlier. #1378 - Remove
MapboxExperimentalannotation from viewport plugin and promote viewport plugin as stable API. (1425) - Introduce
addRendererSetupErrorListener/removeRendererSetupErrorListenermethods forMapViewandMapSurfaceto listen to renderer setup errors and give opportunity to control some edge cases. (1427) - Introduce transition properties for atmosphere and terrain. (1451)
- Enable main thread checking on the map/style object when running applications in debug build. This utility class will crash the application if these objects are accessed from a worked thread. It's required to call these object functions on the main thread, otherwise you can hit edge case crashes. This configurations is advised but can be opted out with a Manifest metadata entry of
com.mapbox.maps.ThreadCheckerand corresponding false value. (#1316). - Introduce view annotation
ViewAnnotationManager.setViewAnnotationUpdateMode/ViewAnnotationManager.getViewAnnotationUpdateModeAPI with following synchronization modes: MAP_SYNCHRONIZED (used by default) and MAP_FIXED_DELAY. (1415) - Reduce geometry on globe tile to increase rendering performance. (#1462)
- Improve rendering performance with deleting layer render data on a worker thread. (#1462)
- Support using
line-trim-offsetproperty with pure line color. (#1462) - Render cache and Terrain can now have mipmapping enabled to reduce aliasing. (#1462)
- Fast ambient occlusion support for fill extrusion layer. (#1462)
- Refactor view annotation implementation to align map and annotation movement better when camera changes. (#1462)
- Add API
OfflineManager::createTilesetDescriptor(TileDescriptorOptionsForTilesets)to create tileset descriptor from a tilesets list. (#1462) - Introduce
FillExtrusionLayer.fillExtrusionAmbientOcclusionIntensityandFillExtrusionLayer.fillExtrusionAmbientOcclusionRadiusproperties for FillExtrusionLayer. (1458) - Introduce
PointAnnotation.textLineHeightand deprecatedPointAnnotationManager.textLineHeight, astext-line-heightis data-driven property now. (1458)
Bug fixes 🐞
- Fix lifecycle edge cases not being handled properly by introducing internal
ViewLifecycleOwnerto have granular control over MapView's lifecycle. (1330) - Fix an issue when
literalarray expression is used as output inside thematchexpression. (1444) - Fix skipping gesture updates resulting in slower gestures on low-end devices. (#1440)
- Fix incorrect image source rendering with terrain enabled. (#1462)
- Fix possible crash bug in image processing. (#1462)
- Fix some cpu-updated symbols being invisible in globe view. (#1462)
- Add support for terrain transition properties. (#1462)
- Fix zoom constraining issue when the input 'maxZoom' is smaller than the current 'minZoom' value. (#1462)
- Fix crash on calling Query Rendered Features API from renderer thread before initialising the renderer. (#1462)
- Fix tile pre-fetching for the globe map projection. (#1462)
- Fix a bug where changing size of the map would lead map center getting changed as well. (#1462)
Dependencies
- Bump gl-native to v10.7.0-beta.1, common to 22.1.0-beta.1. (#1462)
10.6.0 - June 16, 2022
Changes since Mapbox Maps SDK for Android 10.5.0
Breaking changes ⚠️
- Remove deprecated (since
v10.5.0) experimental methodsMapboxMap.setMapProjection/MapboxMap.getMapProjection. Those methods should be replaced with setting projection as part of Style DSL to achieve the same behavior. (1420)
Features ✨ and improvements 🏁
- Enable support for incremental annotation processing. (#1323)
- Make use of non-deprecated common Mapbox logger. (#1327)
- Expose factory methods for high-level camera animators. (#1338)
- Introduce map atmosphere and fog. Setting atmosphere and fog supports Style DSL as well. (#1344)
- Introduce experimental 3D model support. (#1351)
- Use a single shared buffer across all globe tiles to increase globe rendering performance. (#1351)
- Re-introduce partial tile loading feature that decreases map load times. (#1351)
- The
TilesetDescriptorOptions.pixelRatioparameter is now passed to the TileStore and considered for the raster tile pack loading. This enables loading of a raster tilepacks for retina displays. (#1351) - Introduce pinchScrollEnabled configuration to enable/disable 2-finger map panning, default to true. (#1343)
- Re-throw native exceptions
jni::PendingJavaExceptionas readable Java exceptions with detailed exception text. (#1363) - Add static
MapView.isTerrainRenderingSupported()method to validate if 3D terrain rendering is supported on given device. (1368) - Optimize
MapboxMap.loadStyle()to apply styling properties earlier. #1362 - Update SDK name in attribution action sheet. (1375)
- Introduce experimental ModelLayer API to render 3D models on the map. (#1369)
- Minimise tiles relayout on camera zooming with globe view. Improve the overall performance and reduce latency of the cached tiles appearance. (#1396)
- Add minimum and maximum range check for sky layer property
sky-atmosphere-sunandsky-gradient-center. If the input is invalid, the default property value will be used. (#1396) - Share render data between vector render tiles referring to the same logical tile. (#1396)
- Reduce geometry on globe tile to increase rendering performance. (#1432)
Bug fixes 🐞
- Enable two finger pan gesture. (#1280)
- Fix a bug that scale bar is shorter than it should be; trigger
invalidateScaleBarwhile updating settings to make scale keep the latest status. (#1336) - Keep the original animator owner for
CameraAnimationsPlugin.playAnimatorsTogetherandCameraAnimationsPlugin.playAnimatorsSequentially. (#1345) - Fix for momentary appearing of a lower zoom level tile labels during camera movement. (#1351)
- Fix for location indicator not being rendered at the horizon when terrain is enabled. (#1351)
- Fix for loading gltf models with interleaved buffers. (#1351)
- Fix a bug that
line-trim-offsetinput may lose precision via shader calculation. (#1359) - Add mercator scale factor to 3D location puck, so that the 3D puck size won't increase as latitude increases. (#1350
- Fix a crash due to invalid focal point when panning the map. (#1364)
- Fix compass is not showing in "edge-to-edge" mode. (1391)
- Fix an unexpected request update delay for tiles taken from in-memory cache when minimumTileUpdateInterval is set. (#1396)
- Fix a rare bug where some tiles would not show up correctly on globe. (#1396)
- Fix a bug where features could be queried without cursor intersecting the globe. (#1396)
- Fix view annotations disappearing on the globe. (#1396)
- Fix symbols ignoring both collision and placement on the globe. (#1396)
- Add anti-aliasing on the globe on low zoom levels. (#1396)
- Fix globe controls when map orientation is something else than "north". (#1396)
- Fix circle and heatmap layers not being aligned with globe's surface. (#1396)
- Optimise the frequency to update location layer's visibility. (1399)
- Fix the delay in the first appearance of the location puck. (1403)
- Remove
android.permission.GET_TASKSpermission from the SDK. (1430) - Fix lag during night/day style switching when globe is enabled. (#1432)
- Fix crash on globe symbol placement that happens during style change. (#1432)
- Fix incorrect image source rendering with terrain enabled. (#1432)
- Fix in-memory tile cache for non-geometry tiles when the map projection changes. Before, the tiles cached while the previous projection was active could not be used with the new projection active. (#1432)
Dependencies
- Bump Mapbox Android base library to v0.8.0. (#1323)
- Bump gl-native to v10.6.0, common to 22.0.0. (#1432)
- Bump telemetry to v8.1.3, android core to 5.0.2. (1430)
10.6.0-rc.1 June 2, 2022
Features ✨ and improvements 🏁
- Minimise tiles relayout on camera zooming with globe view. Improve the overall performance and reduce latency of the cached tiles appearance. (#1396)
- Add minimum and maximum range check for sky layer property
sky-atmosphere-sunandsky-gradient-center. If the input is invalid, the default property value will be used. (#1396) - Share render data between vector render tiles referring to the same logical tile. (#1396)
Bug fixes 🐞
- Fix compass is not showing in "edge-to-edge" mode. (1391)
- Fix an unexpected request update delay for tiles taken from in-memory cache when minimumTileUpdateInterval is set. (#1396)
- Fix a rare bug where some tiles would not show up correctly on globe. (#1396)
- Fix a bug where features could be queried without cursor intersecting the globe. (#1396)
- Fix view annotations disappearing on the globe. (#1396)
- Fix symbols ignoring both collision and placement on the globe. (#1396)
- Add anti-aliasing on the globe on low zoom levels. (#1396)
- Fix globe controls when map orientation is something else than "north". (#1396)
- Fix circle and heatmap layers not being aligned with globe's surface. (#1396)
Dependencies
- Bump gl-native to v10.6.0-rc.1, common to 22.0.0-rc.2. (#1396)
10.6.0-beta.2 May 25, 2022
Features ✨ and improvements 🏁
- Update SDK name in attribution action sheet. (1375)
- Introduce experimental ModelLayer API to render 3D models on the map. (#1369)
10.6.0-beta.1 May 19, 2022
Features ✨ and improvements 🏁
- Enable support for incremental annotation processing. (#1323)
- Make use of non-deprecated common Mapbox logger. (#1327)
- Expose factory methods for high-level camera animators. (#1338)
- Introduce map atmosphere and fog. Setting atmosphere and fog supports Style DSL as well. (#1344)
- Introduce experimental 3D model support. (#1351)
- Use a single shared buffer across all globe tiles to increase globe rendering performance. (#1351)
- Re-introduce partial tile loading feature that decreases map load times. (#1351)
- The
TilesetDescriptorOptions.pixelRatioparameter is now passed to the TileStore and considered for the raster tile pack loading. This enables loading of a raster tilepacks for retina displays. (#1351) - Introduce pinchScrollEnabled configuration to enable/disable 2-finger map panning, default to true. (#1343)
- Re-throw native exceptions
jni::PendingJavaExceptionas readable Java exceptions with detailed exception text. (#1363) - Add static
MapView.isTerrainRenderingSupported()method to validate if 3D terrain rendering is supported on given device. (1368) - Optimize
MapboxMap.loadStyle()to apply styling properties earlier. #1362
Bug fixes 🐞
- Enable two finger pan gesture. (#1280)
- Fix a bug that scale bar is shorter than it should be; trigger
invalidateScaleBarwhile updating settings to make scale keep the latest status. (#1336) - Keep the original animator owner for
CameraAnimationsPlugin.playAnimatorsTogetherandCameraAnimationsPlugin.playAnimatorsSequentially. (#1345) - Fix for momentary appearing of a lower zoom level tile labels during camera movement. (#1351)
- Fix for location indicator not being rendered at the horizon when terrain is enabled. (#1351)
- Fix for loading gltf models with interleaved buffers. (#1351)
- Fix a bug that
line-trim-offsetinput may lose precision via shader calculation. (#1359) - Add mercator scale factor to 3D location puck, so that the 3D puck size won't increase as latitude increases. (#1350
- Fix a crash due to invalid focal point when panning the map. (#1364)
Dependencies
- Bump Mapbox Android base library to v0.8.0. (#1323)
- Bump gl-native to v10.6.0-beta.3, common to 22.0.0-beta.1. (#1351, #1354, #1359)
10.4.4 May 12, 2022
Bug fixes 🐞
- Fix NaN latitude native crash rarely happening during
MapboxMap#flyTo. (#1271)
10.5.0 May 4, 2022
Features ✨ and improvements 🏁
- Make map projection part of the style-spec and introduce new methods
StyleInterface.setProjection/StyleInterface.getProjection. Setting projection supports Style DSL as well. (#1255, #1314) - Automatic transition between the globe and mercator projection updated to appear visually more subtle. (#1315)
- Avoid repeated tile loading from network (or repeated tile decompression when the tile is fetched from the cache database) and repeated vector tile data allocation and parsing when loading render tiles referring to the same logical tile. (#1315)
- Switch to use shader to calculate the 'line-trim-offset' property update. (#1315)
- Layer properties transitions performance improved if the layer is transitioning to the same constant value or if transitioning from/to data-driven property. (#1315)
- 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. (#1315)
- Globe view controls revamped for more intuitive interaction with touch controls. (#1315)
- OfflineRegion::getStatus() API added to get the completion status and the local size of the existing legacy offline regions. (#1315)
- Refactor all Mapbox logs so that Logcat tag will always be 'Mapbox' allowing easier filtering. Previous log tag will become part of the log message now. (#1276)
- Optimize how plugins handle settings changes. Call
applySettingsonly when settings value changes. (#1189) - Add
MapboxMap.isValid()andStyle.isValid()methods.MapboxMapbecomes invalid whenMapView.onDestroy()is called.Stylebecomes invalid whenMapView.onDestroy()is called or new style has been loaded. Accessing any method on invalid object will print an error log. Also unsubscribe map observers automatically whenMapboxMap.onDestroy()is invoked. (1193) (1202 (1230) (1241)) - Add
MapboxMap.coordinateBoundsForCameraUnwrappedmethod for API consistency. (1222) - Add
LocationIndicatorLayer.bearingTransitionAPI to control transition of bearing property. (1207) - Add
MapboxConcurrentGeometryModificationExceptionwith detailed information instead ofConcurrentModificationExceptionthat is thrown when GeoJson data is mutated. (1248) - Introduce
line-trim-offsetproperty for LineLayer. (1252) - Deprecate
FollowPuckViewportStateOptions.animationDurationMs, the initial transition will be handled properly by the Viewport plugin internally. (1256, 1261, 1262) - Mark
MapView.viewAnnotationManageras non-experimental meaning View Annotation API will not have breaking changes in upcoming minor releases. (1260)
Bug fixes 🐞
- Fix geojson missing updates with persistent layer after style change. (#1324)
- Fix render tasks being skipped when creating the map that could lead to missing tiles. (#1304)
- The legacy offline region observer instance is not unnecessarily retained inside the engine. #1315
- Fix a bug of querying rendered feature for circle layer with map-pitch-alignment when the pitch is zero. #1315
- Fix a bug where zooming was not possible with terrain enabled and exaggeration 0. #1315
- Fix an issue where internal hsla() function was converted to an invalid rgba expression. #1315
- Fix a bug that 'line-trim-offset' calculation did not property cover 'round' or 'square' line cap in line ends. #1315
- Dispatched in-flight events will not be delivered if 'unsubscribe' is called before an event is delivered. #1315
- Fix an issue where some of the visible tiles could be erroneously culled during transition between globe and mercator projection. #1315
- Fixes issues where camera appears under terrain, or map gets bumpy repositioning after exaggeration change. #1315
- Disable terrain rendering if GPU does not support Vertex Texture Fetch. #1315
- Fixed a bug that occasionally prevents symbols from loading. #1315
- Fixed a bug that causes line layers to flicker. #1325
- Fix NaN latitude native crash rarely happening during
MapboxMap.flyTo. (#1271) - Limit
MapboxMap.pixelForCoordinateto the bounds of MapView. (#1226) - Fix PolygonAnnotation and PolylineAnnotation being distorted while dragging with 3D terrain. (#1223)
Dependencies
10.4.3 April 27, 2022
Bug fixes 🐞
- Fix render tasks being skipped when creating the map that could lead to missing tiles. (#1304)
10.5.0-rc.1 April 20, 2022
Features ✨ and improvements 🏁
- Refactor all Mapbox logs so that Logcat tag will always be 'Mapbox' allowing easier filtering. Previous log tag will become part of the log message now. (#1276)
- Avoid repeated tile loading from network (or repeated tile decompression when the tile is fetched from the cache database) and repeated vector tile data allocation and parsing when loading render tiles referring to the same logical tile. (#1282)
- Switch to use shader to calculate the 'line-trim-offset' property update. (#1282)
Bug fixes 🐞
- Fix issue where internal hsla() function was converted to an invalid rgba expression. (#1282)
- Fix a bug that 'line-trim-offset' calculation did not property cover 'round' or 'square' line cap in line ends. (#1282)
- Fix NaN latitude native crash rarely happening during
MapboxMap#flyTo. (#1271) - Limit
MapboxMap#pixelForCoordinateto the bounds of MapView. (#1226)
Dependencies
- Bump gl-native to v10.5.0-rc.1, mapbox-common to v21.3.0-rc.2. (#1282)
10.4.2 April 13, 2022
Bug fixes 🐞
- [tile store] Correctly decode compressed content if loaded from the cache. (#1279)
- [tile store] Fixed issue that prevented data blobs larger than 1 MB to be transferred via the service. (#1279)
10.5.0-beta.1 April 7, 2022
Breaking changes ⚠️
- Experimental methods
MapboxMap#setMapProjection/MapboxMap#getMapProjectionare removed and should be replaced withStyleInterface#setProjection/StyleInterface#getProjection. Setting projection supports Style DSL as well. (#1255)
Features ✨ and improvements 🏁
- Optimize how plugins handle settings changes. Call
applySettingsonly when settings value changes. (#1189) - Add
MapboxMap.isValid()andStyle.isValid()methods.MapboxMapbecomes invalid whenMapView.onDestroy()is called.Stylebecomes invalid whenMapView.onDestroy()is called or new style has been loaded. Accessing any method on invalid object will print an error log. Also unsubscribe map observers automatically whenMapboxMap.onDestroy()is invoked. (1193) (1202 (1230) (1241)) - Add
MapboxMap#coordinateBoundsForCameraUnwrappedmethod for API consistency. (1222) - Add
LocationIndicatorLayer.bearingTransitionAPI to control transition of bearing property. (1207) - Add
MapboxConcurrentGeometryModificationExceptionwith detailed information instead ofConcurrentModificationExceptionthat is thrown when GeoJson data is mutated. (1248) - Introduce
line-trim-offsetproperty for LineLayer. (1252) - Deprecate
FollowPuckViewportStateOptions.animationDurationMs, the initial transition will be handled properly by the Viewport plugin internally. (1256, 1261, 1262) - Mark
MapView#viewAnnotationManageras non-experimental meaning View Annotation API will not have breaking changes in upcoming minor releases. (1260) - Map render call optimized further by further reducing computational overhead. (#1244)
- Layer properties transitions performance improved if the layer is transitioning to the same constant value or if transitioning from/to data-driven property. (#1244)
- 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. (#1244)
- Globe view controls revamped for more intuitive interaction with touch controls. (#1244)
- OfflineRegion::getStatus() API added to get the completion status and the local size of the existing legacy offline regions. (#1244)
- Automatic transition between the globe and mercator projection updated to appear visually more subtle. (#1244)
Bug fixes 🐞
- Dispatched in-flight events will not be delivered if 'unsubscribe' is called before an event is delivered. (#1244)
- Transitions between globe and mercator projection do not cull tiles incorrectly anymore. (#1244)
- Map LOD disabled for camera pitch less than 30 degrees to avoid map content missing on maps with insets. (#1244)
- Terrain-related camera issues fixed, previously making it appear under terrain, or incorrectly repositioned after exaggeration change. (#1244)
- Terrain rendering disabled on GPUs not supporting Vertex Texture Fetch. (#1244)
- Fixed a bug that occasionally prevented symbols from loading. (#1244)
- Fix PolygonAnnotation and PolylineAnnotation being distorted while dragging with 3D terrain. (#1223)
Dependencies
- Bump gl-native to v10.5.0-beta.1, mapbox-common to v21.3.0-beta.2. (#1244)
10.4.1 April 7, 2022
Bug fixes 🐞
- Re-introduce the API to get the status of the existing offline regions, so that the clients can get the completion status and the local size of the existing legacy offline regions. (#1263)
- Fix a bug that occasionally prevents symbols from loading. (#1263)
Dependencies
- Bump gl-native to v10.4.2 (#1263)
10.4.0 March 23, 2022
Changes since Mapbox Maps SDK for Android 10.3.0
Features ✨ and improvements 🏁
- Refactor scheduling logic for render thread improving rendering performance. (#1068)
- Add LocationCompassEngine and accuracy radius support for location component plugin. (#1016) (#1131)
Inorder to avoid breaking api changes, interface location2 is introduced for updating
puckBearingSource,puckBearingEnabledandshowAccuracyRingproperties.
// Change the puck bearing source.
mapView.location2.puckBearingSource = PuckBearingSource.HEADING
mapView.location2.puckBearingSource = PuckBearingSource.COURSE
// Change the visibility of accuracy ring.
mapView.location2.showAccuracyRing = true
mapView.location2.showAccuracyRing = false
// Change the puck bearing enabled.
mapView.location2.puckBearingEnabled = true
mapView.location2.puckBearingEnabled = false
- Add support for custom widgets rendered on top of the map. (#1036)
- Expose DefaultLocationProvider as public class. (#1168)
- Add new methods to View Annotation API:
ViewAnnotationManager.removeAllViewAnnotations()andViewAnnotationManager.addOnViewAnnotationUpdatedListener(listener: OnViewAnnotationUpdatedListener)/ViewAnnotationManager.removeOnViewAnnotationUpdatedListener(listener: OnViewAnnotationUpdatedListener). (#1165) - Add optional
TransitionOptionsparameter toMapboxMap.loadStyleUri,MapboxMap.loadStyleJson,MapboxMap.loadStyleto apply transition to style being loaded. (#1174) - Rendering performance improvements. (1215)
- Add support for 3D terrain tilepacks. (1215)
- Add
Style#hasStyleImagemethod that checks whether an image is in the style. (1215)
Bug fixes 🐞
- Fix skipping / crashing user events scheduled on a render thread with
MapView#queueEvent. (#1068) - Fix location puck not being shown if map is created without initial style (e.g. MapInitOptions.styleUri == null) and then loaded asynchronously. (#1114)
- Fix crash within location plugin that happens when style is reloaded simultaneously with location plugin updates. (#1112)
- Fix memory leak in location component. (#1093, #1172)
- Fix bearing of the puck reseted on settings change. (#1144)
- Fix an issue when user subscribe sdk listeners multiple times, by changing CopyOnWriteArrayList to CopyOnWriteArraySet in the sdk to hold listeners. (1183)
- Fix an issue when label list is used within the match expression DSL. (1204)
- Fix too small bounds returned by
Map#latLngBoundsZoomForCamerawith tilted view andMap#latLngBoundsZoomForCameraUnwrappedwhen viewing >360° longitude. (1215) - Fix screen coordinate queries when using zero pitch and high zoom values. (1215)
- Fix crash for the case when a map event is handled by an Observer of a destructed Map. (1215)
- Fix shimmering artifact when pitched raster tiles with compressed textures are rendered. (1215)
- Avoid possible crash at program exit caused by dummy tracer accessed after the destruction. (1215)
- Clearing diffuse shaded flag for 3D puck when set by batched 3D rendering. (1215)
Dependencies
- Bump gl-native to v10.4.1, mapbox-common to v21.2.0 (#1215)
- Update android gradle plugin to v7.0.4, gradle version to v7.0.2, Gradle licence plugin to 0.8.80, Kotlin gradle plugin to 1.5.31, Jacoco to 0.8.7. (#1118)
10.4.0-rc.1 March 9, 2022
Bug fixes 🐞
- Fix an issue when user subscribe sdk listeners multiple times, by changing CopyOnWriteArrayList to CopyOnWriteArraySet in the sdk to hold listeners. (1183)
- Fix an issue when label list is used within the match expression DSL. (1204)
- Fixed an issue where small bounds returned by Map::latLngBoundsZoomForCamera with tilted view and Map::latLngBoundsZoomForCameraUnwrapped when viewing >360° longitude. (#1208)
Dependencies
- Bump gl-native to 10.4.0-rc.1, mapbox-common to v21.2.0-rc.1 (#1208)
10.4.0-beta.1 February 24, 2022
Features ✨ and improvements 🏁
- Refactor scheduling logic for render thread improving rendering performance. (#1068)
- Add LocationCompassEngine and accuracy radius support for location component plugin. (#1016) (#1131)
Inorder to avoid breaking api changes, interface location2 is introduced for updating
puckBearingSource,puckBearingEnabledandshowAccuracyRingproperties.
// Change the puck bearing source.
mapView.location2.puckBearingSource = PuckBearingSource.HEADING
mapView.location2.puckBearingSource = PuckBearingSource.COURSE
// Change the visibility of accuracy ring.
mapView.location2.showAccuracyRing = true
mapView.location2.showAccuracyRing = false
// Change the puck bearing enabled.
mapView.location2.puckBearingEnabled = true
mapView.location2.puckBearingEnabled = false
- Add support for custom widgets rendered on top of the map. (#1036)
- Expose DefaultLocationProvider as public class. (#1168)
- Add new methods to View Annotation API:
ViewAnnotationManager.removeAllViewAnnotations()andViewAnnotationManager.addOnViewAnnotationUpdatedListener(listener: OnViewAnnotationUpdatedListener)/ViewAnnotationManager.removeOnViewAnnotationUpdatedListener(listener: OnViewAnnotationUpdatedListener). (#1165) - Improve rendering performance by coalescing map updates when possible. (#1160)
- Add
StyleManager::hasStyleImageAPI that checks whether an image is in the style or not. (#1160) - Improve Snapshotter performance by using a lightweight scheduler instead of platform runloop. (#1160)
- Map now waits on sprite sheet loading before rendering. (#1160)
- Improve map rendering performance by avoiding calculations for all the non-transitional style layer paint properties. (#1160)
- Enable using of tile pack scheme from TileJSON. (#1160)
- Improve map rendering performance by decreasing de/allocations in map placement code. (#1160)
- Avoid style layer properties transition calculation when
TransitionOptions::durationis set to 0. (#1160) - Enable tile packs for DEM terrain tiles, it includes both Offline API and
TileStoreUsageMode::ReadAndUpdateresource option. (#1160) - Render tiles with partial content while the glyph dependencies are loading. (#1160)
- Canonicalize URLs and enable Offline API usage for the 3dtiles/v1 tiles. (#1160)
- Add optional
TransitionOptionsparameter toMapboxMap.loadStyleUri,MapboxMap.loadStyleJson,MapboxMap.loadStyleto apply transition to style being loaded. (#1174)
Bug fixes 🐞
- Fix skipping / crashing user events scheduled on a render thread with
MapView#queueEvent. (#1068) - Fix location puck not being shown if map is created without initial style (e.g. MapInitOptions.styleUri == null) and then loaded asynchronously. (#1114)
- Fix crash within location plugin that happens when style is reloaded simultaneously with location plugin updates. (#1112)
- Fix memory leak in location component. (#1093, #1172)
- Fix screen coordinate queries when using zero pitch and high zoom values. (#1160)
- Avoid possible crash at program exit caused by dummy tracer accessed after the destruction. (#1160)
- Fix crash for the case when a map event is handled by an Observer of a destructed map. (#1160)
- Fix shimmering artifact when pitched raster tiles with compressed textures are rendered. (#1160)
- Fix bearing of the puck reseted on settings change. (#1144)
Dependencies
- Bump gl-native to 10.4.0-beta.2, mapbox-common to v21.2.0-beta.1 (#1160, #1175)
- Update android gradle plugin to v7.0.4, gradle version to v7.0.2, Gradle licence plugin to 0.8.80, Kotlin gradle plugin to 1.5.31, Jacoco to 0.8.7. (#1118)
10.3.0 February 10, 2022
Changes since Mapbox Maps SDK for Android 10.2.0
Features ✨ and improvements 🏁
- Improve performance for symbol layout rendering in continuous mode. (#1105)
- Introduce metadata setter API for the legacy offline region. (#1105)
- Optimize zooming on terrain and globe. (#1105)
- Thin out repeated line labels at overscaled tiles in order to avoid excessive memory usage. (#1105)
- Remove experimental designation from persistent layer APIs. (#1105)
- Avoid re-creation of the available sprites set. (#1105)
- Limit the delayed network request maximum time in the scheduler task queue, and thus avoid excessive memory usage. (#1105)
- Fill extrusion layer support for globe view. (#1105)
- Increase priority of a renderer thread. (#1105)
- Introduce viewport plugin. (#1033, #1069)
- Add
Style#removeTerrainmethod. (#906) - Introduce ability to specify
startDelayproperty as part ofmapAnimationOptionsfor high-level animations. (#932) - Deprecate map extension function to get gesture settings. (#952)
- Introduce Mapbox exceptions instead of regular runtime exceptions allowing more precise control of catching them from user's end. (#964)
- Add
tile-requests-delayandtile-network-requests-delaysource properties for tile requests delay. (#960) - Expose unique annotation feature identifier that could be used to link view annotation to any annotation. (#994)
- Remove json serialization in observable extension improving overall performance by saving CPU cycles. (#1001)
- Add wrap content dimension support for view annotations. (#1021)
- Add extension function for location component to support show / hide arrow bearing image. (#1012)
Bug fixes 🐞
- Include geometry data buffer size when calculating total size of a tile. (#1105)
- Fix screen coordinate queries when using zero pitch and high zoom values. (#1105)
- View Annotation API: move internal Java files to the corresponding package. (#1105)
- Reduces drag sensitivity around and above horizon. (#1105)
- Erase corrupt tiles from TileStore. (#1105)
- Add perspective correction for non-rectangular images. (#1105)
- Fix rendering artifacts when compressed and un-compresed raster tiles are rendered. (#1105)
- 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. (#1105)
- Avoid possible crash at program exit caused by dummy tracer accessed after destruction. (#1116)
- Fix crash for the case when a map event is handled by an Observer of a destructed map. (#1116)
- Fix an issue where 3D puck used to scale when changing coordinate bounds. (#1067)
- Fix map not rendering on emulators when MSAA is enabled. (#1077)
- Fix issue with map rendering when limiting max FPS. (#1100)
- Revert "Add LocationCompassEngine for location component (#970)" that was introduced in v10.3.0-beta.1, as it accidentally introduced an API breaking change. (#1115)
- Fix an issue where source attribution was not populated in attribution dialog. (#1087)
- Fix an issue that causes transition to following viewport state not being fired when the bearing is set to constant. (#1064)
- Fix default viewport transition's anchor point. (#1070)
- Fix crash on destruction with ongoing tile-store downloads. (#1071)
- Fix not allowing loading empty style uri. (#904)
- Fix black
MapView#snapshotreturned on some devices (e.g. Huawei). (#966) - Enable drag annotation while changing the annotation to draggable on long click. (#990)
- Send turnstile events for snapshotter usage. (#920)
- Allow localizing non-mapbox street sources, align localization logic with iOS implementation. (#968)
- Remove observer after it's not needed anymore from map renderer resulting in slightly better CPU consumption. (#1014)
- Fix memory leak in view annotations caused by not removing properly global layout listener properly. (#1037)
- Update vector-tile to v1.0.4, fixing an end of buffer exception. (#1035)
- Fix terrain occluding 3D location indicator. (#1035)
- Fix location indicator layer rendering when SwiftShader is used. (#1035)
Dependencies
- Update gl-native to v10.3.2, common to v21.1.0. (#1105, #1116, #1134)
- Add sdk versions plugin v1.1.3. (#1123)
10.3.0-rc.1 January 26, 2022
Features ✨ and improvements 🏁
- Refine viewport plugin's public APIs. (#1069)
- Reintroduce missing
OfflineRegion#setMetadataAPI for parity withOfflineRegion#updateMetadatain v9. (#1071) - Improved frame rate when zooming in and out over terrain and globe. (#1071)
- Thin out repeated line labels at overscaled tiles in order to avoid excessive memory usage. (#1071)
Bug fixes 🐞
- Fix an issue that causes transition to following viewport state not being fired when the bearing is set to constant. (#1064)
- Fix an issue where 3D puck used to scale when changing coordinate bounds. (#1067)
- Fix default viewport transition's anchor point. (#1070)
- Fix screen coordinate queries when using zero pitch and high zoom values. (#1071)
- Fix crash on destruction with ongoing tile-store downloads. (#1071)
- Fix map not rendering on emulators when MSAA is enabled. (#1077)
Dependencies
- Bump gl-native to v10.3.0-rc.1, common to v21.1.0-rc.1. (#1071)
10.3.0-beta.1 January 12, 2022
Features ✨ and improvements 🏁
- Introduce viewport plugin. (#1033)
- Promote persistent style layer APIs to be production-ready. (#879)
- Add
Style#removeTerrainmethod. (#906) - Introduce ability to specify
startDelayproperty as part ofmapAnimationOptionsfor high-level animations. (#932) - Deprecate map extension function to get gesture settings. (#952)
- Introduce Mapbox exceptions instead of regular runtime exceptions allowing more precise control of catching them from user's end. (#964)
- Add
tile-requests-delayandtile-network-requests-delaysource properties for tile requests delay. (#960) - Expose unique annotation feature identifier that could be used to link view annotation to any annotation. (#994)
- Add
LocationComponentSettings.puckBearingSourceproperty to control location puck bearing to be either GPS or compass. (#970) - Remove json serialization in observable extension improving overall performance by saving CPU cycles. (#1001)
- Add wrap content dimension support for view annotations. (#1021)
- Add extension function for location component to support show / hide arrow bearing image. (#1012)
- Fill extrusion layer support for globe view. (#1035)
Bug fixes 🐞
- Fix not allowing loading empty style uri. (#904)
- Fix black
MapView#snapshotreturned on some devices (e.g. Huawei). (#966) - Enable drag annotation while changing the annotation to draggable on long click. (#990)
- Send turnstile events for snapshotter usage. (#920)
- Allow localizing non-mapbox street sources, align localization logic with iOS implementation. (#968)
- Remove observer after it's not needed anymore from map renderer resulting in slightly better CPU consumption. (#1014)
- Fix memory leak in view annotations caused by not removing properly global layout listener properly. (#1037)
- Update vector-tile to v1.0.4, fixing an end of buffer exception. (#1035)
- Erase corrupt tiles from TileStore. (#1035)
- Fix rendering artifacts when compressed and un-compressed raster tiles are rendered. (#1035)
- Fix terrain occluding 3D location indicator. (#1035)
- Fix location indicator layer rendering when SwiftShader is used. (#1035)
Dependencies
- Bump gl-native to v10.3.0-beta.1, common to v21.1.0-beta.1. (#1035)
10.2.0 December 15, 2021
Changes since Mapbox Maps SDK for Android 10.1.0
Features ✨ and improvements 🏁
- Introduce view annotation support which allows adding Android views on top of the
MapViewanchored to geo-point. (#834) - Remove
MapViewargument when constructingAnnotationManager. Constructor takingMapViewas parameter is marked as deprecated. (#766) - Implement cluster API on top of
MapboxMap.queryFeatureExtensionsmaking it easier to use and providing better alignment with Mapbox Maps v9. (#773) - Add heatmap and circle layer support to globe view. (#852)
- Add cancelable Query Rendered Features API to
MapboxMap. (#852) - Improve
MapboxMap.queryRenderedFeaturesperformance especially when querying large number of features. (#852) - Cache layer layout key inside layer, so that it is not re-evaluated at every parse of the every tile improving rendering performance. (#852)
- Core renderer prints its version on initialization. (#852)
- Introduce experimental
MapboxMap.setMemoryBudgetmethod for setting memory budget for the map and runtime "resource-budget" property for data sources. (#852) - Improve performance by avoiding re-layout of invisible fading tiles. (#852)
- Add utility methods to
CoordinateBounds. (#852)
Bug fixes 🐞
- Fix black screen issue on some devices caused by incorrect EGL config. (#980)
- Fix
replaceWithtemplate to replace deprecatedqueryRenderFeaturesoverloaded methods. (#878) - Do not allow to use one
associatedFeatureIdwith multiple view annotations. (#896) - Fix an issue where shove gesture was not detected when angle between touch points are not horizontal. (#875)
- Fix gestures at high camera pitch near horizon line. (#927, #925)
- Fix fading tiles layout visibility issue on globe view projection zooming in/out. (#925)
- Allow simultaneous zoom and rotate gesture by default and add
GesturesSettings#simultaneousRotateAndPinchToZoomEnabledconfig option. (#885) - Fix
MapView.onLowMemorynot being called on low resources. (#780) - Fix scale bar ratio setting not applied correctly. (#827)
- Fix scale bar text missing for Android API 23. (#839)
- Fix scale bar text being overlapped and clipped. (#856)
- Fix puck jump to nullisland when location plugin settings are changed. (#846)
- Fix scale listener events not being called for quick zoom doubleTap and doubleTouch gestures. (#858)
- Release all unused resources when
MapboxMap.reduceMemoryUseis invoked. (#852) - Fix crash for the case when an empty fill extrusion bucket is tried to be rendered. (#852)
- Fix transparency issues with value < 0.5 for 3D puck models. (#852)
- Fix regression where setting the same geojson source URL did not refresh the data. (#852)
- Fix symbol layers with variable anchor placement not being placed correctly on globe view. (#852)
- Fix crash in symbol reprojection code caused by division by zero. (#852)
- Fix issue with bounds constraining behavior when terrain is enabled. (#852)
Dependencies
10.1.2 December 13, 2021
Bug fixes 🐞
- Fix billing issue when upgrading Mapbox Maps SDK from v9 to v10.
Dependencies
- Bump common to 20.1.2. (#979)
10.0.2 December 13, 2021
Bug fixes 🐞
- Fix billing issue when upgrading Mapbox Maps SDK from v9 to v10.
Dependencies
- Bump common to v20.0.3.(#978)
10.2.0-rc.1 December 2, 2021
Bug fixes 🐞
- Fix
replaceWithtemplate to replace deprecatedqueryRenderFeaturesoverloaded methods. (#878) - Do not allow to use one
associatedFeatureIdwith multiple view annotations. (#896) - Fix an issue where shove gesture was not detected when angle between touch points are not horizontal. (#875)
- Fix gestures at high camera pitch near horizon line. (#927, #925)
- Fix fading tiles layout visibility issue on globe view projection zooming in/out. (#925)
- Allow simultaneous zoom and rotate gesture by default and add
GesturesSettings#simultaneousRotateAndPinchToZoomEnabledconfig option. (#885)
Dependencies
- Bump gl-native to v10.2.0-rc.1, common to v21.0.0-rc.2. (#925)
10.1.1 December 1, 2021
NOTE: As of December 3, 2021, this release is no longer available due to a new bug that was introduced while fixing the billing issue. A new patch will be issued shortly.
Bug fixes 🐞
- Fix billing issue when upgrading Mapbox Maps SDK from v9 to v10.
Dependencies
- Bump gl-native to 10.1.1, common to 20.1.1.
10.0.1 November 26, 2021
NOTE: As of December 3, 2021, this release is no longer available due to a new bug that was introduced while fixing the billing issue. A new patch will be issued shortly.
Bug fixes 🐞
- Fix billing issue when upgrading Mapbox Maps SDK from v9 to v10.
Dependencies
- Bump common to v20.0.2.
10.2.0-beta.1 November 18, 2021
Features ✨ and improvements 🏁
- Introduce view annotation support which allows adding Android views on top of the
MapViewanchored to geo-point. (#834) - Remove
MapViewargument when constructingAnnotationManager. Constructor takingMapViewas parameter is marked as deprecated. (#766) - Implement cluster API on top of
MapboxMap.queryFeatureExtensionsmaking it easier to use and providing better alignment with Mapbox Maps v9. (#773) - Add heatmap and circle layer support to globe view. (#852)
- Add cancelable Query Rendered Features API to
MapboxMap. (#852) - Improve
MapboxMap.queryRenderedFeaturesperformance especially when querying large number of features. (#852) - Cache layer layout key inside layer, so that it is not re-evaluated at every parse of the every tile improving rendering performance. (#852)
- Core renderer prints its version on initialization. (#852)
- Introduce experimental
MapboxMap.setMemoryBudgetmethod for setting memory budget for the map and runtime "resource-budget" property for data sources. (#852) - Improve performance by avoiding re-layout of invisible fading tiles. (#852)
- Add utility methods to
CoordinateBounds. (#852)
Bug fixes 🐞
- Fix
MapView.onLowMemorynot being called on low resources. (#780) - Fix scale bar ratio setting not applied correctly. (#827)
- Fix scale bar text missing for Android API 23. (#839)
- Fix scale bar text being overlapped and clipped. (#856)
- Fix puck jump to nullisland when location plugin settings are changed. (#846)
- Fix scale listener events not being called for quick zoom doubleTap and doubleTouch gestures. (#858)
- Release all unused resources when
MapboxMap.reduceMemoryUseis invoked. (#852) - Fix crash for the case when an empty fill extrusion bucket is tried to be rendered. (#852)
- Fix transparency issues with value < 0.5 for 3D puck models. (#852)
- Fix regression where setting the same geojson source URL did not refresh the data. (#852)
- Fix symbol layers with variable anchor placement not being placed correctly on globe view. (#852)
- Fix crash in symbol reprojection code caused by division by zero. (#852)
- Fix issue with bounds constraining behavior when terrain is enabled. (#852)
Dependencies
- Bump gl-native to v10.2.0-beta.2 and common to v21.0.0-rc.1. (#852)
10.1.0 November 4, 2021
Changes since Mapbox Maps SDK for Android 10.0.0
Features ✨ and improvements 🏁
- Set thread priorities and set thread CPU affinity based on the thread's priority to improve overall map performance.(#810)
- Introduce option to enable multisample anti-aliasing (MSAA) for map rendering. (#741)
- Add convenience methods for
stopexpression in Style DSL. (#698, #764)
Bug fixes 🐞
- Avoid spawning extra AssetManagerFileSource threads when multiple instances of a MapView is created during application lifecycle. (#810)
- Fix rendering artifact when some of the model layer models may have wrong placement when globe view projection is used. (#810)
- Fix rare heatmap flickering when zooming the map. (#810)
- Fix an issue where an Observable event could be dispatched on a thread, different from the subscription thread. (#810)
- Fix an issue where promoteId parameter for VectorSource was overwritten when source tilejson is loaded (#810)
- Fix android glyph drawing issue when 'high contrast' text accessibility feature is turned on. (#810)
- Fix unexpectedly rapid map panning at high pitch level. (#775)
- Fix map move using faster map offsetting after zoom-in or zoom-out gesture. (#738)
- Fix annotation flickering and disappearing during dragging. (#732)
- Fix logo and attribution margin update. (#744)
- Fix
NullPointerExceptionwhile querying annotations. (#746) - Limit fast fling gesture in a downwards direction when map is highly pitched. (#754)
- Fix an issue that caused annotations not being updated when style is loading other resources. (#753)
- Restore the fling factor for slightly pitched maps. (#762)
Dependencies
- Bump gl-native to 10.1.0, common to 20.1.0. (#810)
10.1.0-rc.1 October 28, 2021
Bug fixes 🐞
- Fix unexpectedly rapid map panning at high pitch level. (#775)
- Improve rendering performance by setting thread priorities and set thread CPU affinity based on the thread's priority. (#774)
Dependencies
- Bump gl-native to v10.1.0-rc, and common to v20.1.0-rc.2 (#774)
10.1.0-beta.1 October 21, 2021
Features ✨ and improvements 🏁
- Introduce option to enable Multisample anti-aliasing (MSAA) for map rendering. (#741)
- Add convenience methods for stop expression. (#698, #764)
Bug fixes 🐞
- Fix map move using faster map offsetting after zoom-in or zoom-out gesture. (#738)
- Fix annotation flickering and disappearing during dragging. (#732)
- Fix logo and attribution margin update. (#744)
- Fix
NullPointerExceptionwhile querying annotations. (#746) - Limit fast fling gesture in a downwards direction when map is highly pitched. (#754)
- Fixed an issue that caused annotations not being updated in some cases.. (#753)
- Fix glyph drawing issue when the 'high contrast' text feature is turned on. (#752)
- Fix
promoteIdparameter for VectorSource overwritten when source tilejson is loaded. (#752) - Avoid spawning extra AssetManagerFileSource threads. (#752)
- Fix
NullPointerExceptioninHttpResponseCallback, when get an error message from the Exception. (#752) - Restore the fling factor for slightly pitched maps. (#762)
Dependencies
- Bump gl-native to v10.1.0-beta, and common to v20.1.0-rc.1 (#752)
10.0.0 October 6, 2021
Breaking changes ⚠️
- Add
@JvmOverloadswhere applicable to provide better experience for Java users. (#656) - Refactor gestures configuration options to be aligned better across platforms. (#672)
- Apply geojson data (using
data,url,feature,featureCollection,geometryfunctions) is fully async now. (#699) - Update
getLayerAsfunction to return nullableLayertype. (#673) - Update map events data models. (#712)
- Refactor MapEvents listeners, so that each listener will include one event data property. (#718)
- Abstract classes
CustomLayerHost,ElevationData,MapClient,Observer,OfflineRegionObserver,HttpServiceInterceptorInterface,HttpServiceInterface,LogWriterBackend,OfflineSwitchObserver,ReachabilityInterface,TileStoreObserverhave become interfaces. (#697)
Features ✨ and improvements 🏁
- Introduce 3D globe (experimental). (#667)
- Append gl-native and common API reference documentation to the output of Dokka documentation generation. (#711)
- Set
Process.THREAD_PRIORITY_DISPLAYas render thread priority to improve overall performance. (#701) - Add
HttpServiceFactory.reset()to release the HTTP service implementation. (#697)
Bug fixes 🐞
- Throw exception when gestures plugin functionality is used but plugin was not created. (#653)
- Throw exception when camera plugin functionality is used but plugin was not created. (#668)
- Fix black screen when resuming activity with
MapViewon x86 emulator, Android API <= 23. (#671) - Fix map render deadlock on Android 8 on power on button. (#688)
- Fix context leak in
LocationProviderImpl. (#690) - Fix native memory leak by explicitly nulling map reference from renderer. (#687)
- Fix wrong attribute reference in runtime exception text when token is missing. (#708)
- Fix applying position property to scale bar plugin. (#677)
- Fix initialisation location puck when no style loaded from code by changing
Plugin#onStart()call after style loaded started. (#680) - Fix attribution/logo jumble when RTL layout is configured. (#674)
- Fix rendering artifacts for a model layer when
model-opacityproperty is used. (#697) - Improve rendering performance by avoiding unnecessary re-layout for cached tiles. (#697)
- Fix
onResponsecallback forHttpInterceptornever being called. (#697)
Dependencies
- Bump gl-native to v10.0.0, common to v20.0.0. (#697)
10.0.0-rc.9 September 22, 2021
Features ✨ and improvements 🏁
- Fix documentation for
OnMapIdleListenerandCameraChangeListeners. (#645) - Add support for
SymbolZOrderproperty in PointAnnotationManager. (#638) - Add support for
PromoteIdto be used with Feature State API. (#636) - Expose
optimizeForTerrainflag (default to true) that could be applied to theMapViewin xml. When optimizeForTerrain is enabled, layers could get reordered to achieve the best performance. (#654) - Enable instant transitions for data driven symbol layer properties. (#646)
Bug fixes 🐞
OnStyleLoaded/OnMapLoadedcallbacks are invoked even if hosting fragment/activity is in stopped state. (#629)- Fix drag annotation blink when drag ends. (#639)
- Apply annotation manager properties to the drag layer to keep annotations the same while dragging. (#640)
- Fix point annotation updating all same content bitmaps instead of one particular. (#633)
- Fix
MapboxMap#getStylereturning null after adding a new source when style was loaded before. (#643) - Allow setting null explicitly to annotation nullable properties. (#650)
- Fix
std::exceptionhapping rarely whenMapboxMap#setCamera()is called inside animation plugin. (#652) - Fix memory leak in renderer destroy. (#657)
- Fix transition between layers with all constant properties. (#646)
- Fix rendering artifact for a line layer, when its
line-gradientproperty is set at runtime. (#646) - Don't draw SDF images in
text-fieldand issue warning for it. (#646) - Fix incorrect return from StyleManager#getStyleLayerPropertyDefaultValue for
text-field, now the default value is set to["format", "" , {}]. (#646)
Dependencies
- Bump gl-native to 10.0.0-rc.9, common to 19.0.0. (#646)
10.0.0-rc.8 September 8, 2021
Breaking changes ⚠️
- In offline mode (set by either mapbox::common::OfflineSwitch API or on platform side), the error notifications are send if the required resources are not present locally. The volatile tiles are not considered to be required in offline.(#604)
- 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.(#604)
- Add HTTP interceptor API - for anyone who is using HttpServiceInterface; there is a new method called setInterceptor that should be overridden(#604)
Features ✨ and improvements 🏁
- Make 3D puck always over (in front of) 3D layers (buildings, landmarks, custom layer) but behind hill (terrain). (#601)
- Integrate value marshalling performance improvement (#606)
- Introduce drag layer/source for annotation plugin to improve drag performance. (#582)
- Update prefetch zoom delta documentation to match actual behavior (#609)
- Add support for the index-of and slice expressions (#616)
- Improve collision detection by using runtime calculated sizes for collision boxes. Previously collision boxes' sizes are constant, they are calculated during symbol layout time by using constant zoom level(#604)
- Improve collision detection by using runtime calculated pixelated sizes for collision circles. Previously collision circles' sizes are constant, they are calculated during symbol layout time by using constant zoom level(#604)
- 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.(#604)
- Enable instant transitions for data driven paint layer properties(#604)
Bug fixes 🐞
- Use touch focal point to calculate the correct scroll displacement when the map is pitched. (#593)
- Use touch focal point to calculate the correct fling displacement. (#599)
- Allow geojson source to initialise with empty data. (#602)
- Preserve EGL setup on renderer stop. This fixes full map reloading when map is brought out from background. (#598)
- Fix issue with camera animators ordering on Android 6 and lower by revisiting overall approach of applying accumulated camera changes. (#597)
- Enable update bitmap for annotations (#615)
- Fix volatile tiles disappearing on "not modified" response(#604)
- Prioritize addition of a persistent layer whose id is used for other persistent layer positions(#604)
- Only do line breaking process for point placement labels. And if text-max-width is 0, still do general ideographic beaking checks for point labels.(#604)
- Fix collision box's 'dynamicVerticesExt' updating in placement stage(#604)
- Trigger map redraw when feature state changes (#604)
Dependencies
- Bump gl-native to 10.0.0-rc.8, common to 18.0.0 (#604)
10.0.0-rc.7 August 25, 2021
Breaking changes ⚠️
- Remove the expression getter/setters for source properties. (#568)
Features ✨ and improvements 🏁
- Add generateId property for GeoJsonSource. (#538)
- Add default value to improve usability of FeatureState API. (#588)
- Add Style#moveStyleLayer(layerId: String, layerPosition: LayerPosition?): Expected<String, None> API (#563)
- Allow using combination of line-dasharray and line-gradient for line layer. (#563)
Bug fixes 🐞
- Remove strong ref dependency in snapshotter that was leading to a memory leak if Snapshotter#destroy was not called explicitly. (#571)
- Fix get annotation enum property crash (#579)
- Fix rendering issue for round line-join in line gradients (#565)
- A fix of the layer paint property evaluation while transitioning from a data-driven value. It snaps immediately to the new value thus preventing of drawing stale data during the animation.(#563)
- Reduced memory consumption when using raster layers by deleting CPU side tile bitmap copy after uploading to GPU texture.(#563)
- Fix crash on Android when using tile requests delay API(#563)
Dependencies
- Bump gl-native to v10.0.0-rc.7, common to v17.0.0 (#563)
- Bump gl-native to v10.0.0-rc.7.1. (#565)
- Bump gl-native to v10.0.0-rc.7.2, common to 17.1.0 (#575)
- Bump targetSDKVersion and compileSDKVersion to 30, robolectric version to 4.6.1. (#514)
10.0.0-rc.6 August 11, 2021
Breaking changes ⚠️
- Update extension function signatures making them easier to use from Java. (#539)
- Rename
mapView#overlay()tomapView#mapboxOverlay. (#539)
Features ✨ and improvements 🏁
- Support adding 9-patch images to the style. (#536)
- Outdated data for volatile sources gets hidden if cannot be updated due to no Internet connection. (#543)
Bug fixes 🐞
- Fix several memory leaks: clean up OnFpsChangeListener on render thread destroy / introduce Snapshotter#destroy method that must be called in Activity#onDestroy (#546)
- Add layer and source check when creating annotations and init them if not initiated before which creates
AnnotationManagerbefore loading style. (#549) - Fix error messages returned by
Style#removeStyleSourcemethod. (#543) - Store persistent layer's LayerPosition, so that layer can be re-added to correct position if LayerPosition.above or LayerPosition.at is used. (#543)
Dependencies
- Update gl-native to v10.0.0-rc.6 and common to v16.2.0. (#543)
- Remove turf dependency of location component plugin. (#551)
10.0.0-rc.5 July 28, 2021
Breaking changes ⚠️
- Improve camera API consumption from java programming language by adding
CameraAnimationsUtilsandgetCameraJvmName annotations. (#495) - Rename
AttributionView#setOnClickListenertosetViewOnClickListenerto avoid overloading the Android SDK method. Results in compilation on Android P and above. Adjust codebase to changes in enforced nullability of Android SDK code. (#497) - Get rid of using reflection when creating plugins which should decrease
MapViewstartup time if plugins are enabled. (#519)
Features ✨ and improvements 🏁
- Add
showLogoandshowAttributesconfig for snapshotter which are defaulted to true. User can now hide logo and attributions in a snapshotter by changing this config (#496) - Add lifecycle plugin so there is no need to call
onStart/onStop/onDestroy/onLowMemorymethods explicitly, if the appcompact 1.3.0+ is used. (#485) - Add a minimum Android Auto test app and an optional Android Auto extension that provide convenient extension function to initialise the MapSurface from a Car App Session. (#488)
- Add lint check for lifecycle methods (#516)
Bug fixes 🐞
- Fix issues with MapView#snapshot methods that could cause black snapshot or ANR in some cases. (#508)
10.0.0-rc.4 July 14, 2021
The Mapbox Maps SDK for Android has moved to release candidate status and is now ready for production use.
Features ✨ and improvements 🏁
- Add new param to allow users localize selected layers. (#461)
- Add API to control logging for animation plugin and disable debug logs by default. (#474)
- Introduce option to use continuous rendering for scale bar. Continuous render mode will fix gfxinfo profiling. (#458)
- Add shortest bearing path option for animators. (#473)
- Add modelTranslation support for LocationPuck3D (#493)
- Add default parameters to coordinate conversion functions of MapCameraManagerDelegate#cameraForCoordinates, MapCameraManagerDelegate#cameraForCoordinateBounds and MapCameraManagerDelegate#cameraForGeometry. This overloads the functions to have a more simple API surface for developers to hook into. (#491)
- Support text-writing-mode property for line symbol-placement text labels (#1766)
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.
- Session SKU generation is now available
- Add getSKUTokenIfValid to get a SKU token for a SKU identifier if it exists and is not expired, return empty string if not.
- Allow filtering of log messages by categories.
- Expose isFiltered for checking logging category settings
Bug fixes 🐞
- Fix flyTo crash when using single-pixel paddings. (#478)
- Fixed regression in map gestures on devices with Android 6 and lower. (#484)
- Fix overwriting sync geojson data with getSourceAs by async. (#482)
- Clean up network listener after http file source gets out of scope
- Fix line-center anchor calculation when the anchor is very near to the line geometry point
- Fix crash when a Feature State API is used with dedicated rendering thread
- Fix threading issues in HTTP file source
- Fix volatile tilesets handling
Dependencies
- Update gl-native to v10.0.0-rc.5 and common to v16.0.0. (#487)
10.0.0-rc.3 June 30, 2021
The Mapbox Maps SDK for Android has moved to release candidate status and is now ready for production use.
Breaking changes ⚠️
- Perform annotation click synchronously and change AnnotationManagerImpl#queryMapForFeatures function to be synchronous. (#455)
Features ✨ and improvements 🏁
- Introduce static MapboxMap.clearData(resourceOptions: ResourceOptions, callback: AsyncOperationResultCallback) API and MapboxMap#clearData(callback: AsyncOperationResultCallback), Snapshotter#clearData(callback: AsyncOperationResultCallback) APIs. (#442)
- Optimise the Style#getLayer and Style#getSource APIs' performance. (#449)
- MapEvents#MAP_LOADING_ERROR events now include source and tile information where appropriate. New fields would allow developers to understand what source or tile has failed to load and the reason for a failure. (#457)
Bug fixes 🐞
- Fix dropping annotation source updates if those were emitted rapidly without handler. (#441)
- Fix raster/v1 terrain tiles fetch failures caused by appending pixel ratio to the URLs when tile size is equal to 512. (#457)
- Fixed an issue that the LayerPosition is not persisted across the style change, when using persistent layer based annotation plugin and location component plugin. (#457)
- Disable MapboxTelemetryInitProvider if the telemetry is disabled via app's manifest reducing startup time. (#442)
Dependencies
10.0.0-rc.2 June 23, 2021
Features ✨ and improvements 🏁
- Introduce experimental
Style#addPersistentLayer,Layer#isPersistent,Style#addPersistentStyleLayer,Style#addPersistentStyleCustomLayerandStyle#isStyleLayerPersistentAPIs, so that the tagged layer and its associated resources would remain when a style is reloaded. This improves performance of Annotation and Location Component Plugin during the style change. (#368, (#422)) - Add Localization API to apply languages to the style by provided locale. (#379)
- Reduce unnecessary render cache texture updates by introducing a small delay after zoom has changed.
- Save and read application state on a background thread, to avoid delays (~3-5ms) on the main thread.
Bug fixes 🐞
- Introduce size check for render cache. (#425)
- Fix memory leak on render destroy. (#426)
- Changes the visibility of jsonObject in annotation to protected, fix ConcurrentModificationException (#427)
- Fix camera deadlock use-case. (#439)
- Tileset descriptor resolving fixes:
- Operation completes even if the offline manager instance gets out of scope
- Fixes leaking TilesetResolverObserver instance
- Fixes possible crash on cancellation of pending style pack download operation
- Fix text rendering when both 'text-rotate' and 'text-offset' are set.
- Fix Android 12 compatibility to support pending intents mutability.
Dependencies
10.0.0-rc.1 June 10, 2021
Breaking changes ⚠️
- Rename setter for
Lightobject fromaddtoset. This matches API from GL-JS and clarifies there is only 1 Light object. (#387) - Rename setter for
Terrainobject fromaddtoset. (#391) - Remove
CacheManager. In the following releases, an API to control temporary map data may be provided. (#399) - Remove
ResourceOptions::cacheSizeandDefaultAmbientCacheSizeconstant. (#399) - Replace
ResourceOptions::cachePathwithResourceOptions::dataPaththat accepts a folder in which the map stores offline style packages and temporary map data. (#399) - Rename
TileStore::getInstance()toTileStore::create(). (#399) - Remove the
MapView#setRenderCacheandMapSurface#setRenderCacheAPI and replaced them with experimentalMapboxMap#setRenderCacheOptionsandMapboxMap#getRenderCacheOptionsAPIs. (#401) - Change the default
ResourceOptions#dataPathto${context.filesDir.absolutePath}/.mapbox/map_data/and the database name fromambient_cache.dbtomap_data.db. (#403)
Features ✨ and improvements 🏁
- The amount of the unique maps tile packs used in the offline regions is capped by the maximum amount equal to 750. The tile region loading is not be performed if it would cause exceeding of the tile pack limit. (#399)
Bug fixes 🐞
- Fix a typo in
MapboxMapUtilsjvm name. (#396) - Fix an issue that vertical text was not positioned correctly if the
text-offsetproperty was used. (#399) - Emit
MapLoadingErrorwhen an empty token is provided for accessing Mapbox data sources. Before the fix, the application may crash if an empty token was provided and map tries to load data from Mapbox data source. (#399) - Create folder structure for provided
ResourceOptions#dataPathwhen a provided folder doesn't exist. Before the fix, map expected the folder to exist, and in case it didn't, it was difficult to report an error to the application. (#399) - Do not emit
MapLoadingErrorwhen an empty URL is set to GeoJSON source. (#399) - Avoid packaging
gms-play-services-locationby default as part of the Android SDK. (#399) - Fix an issue that causes public resource definitions not generated in public.txt file. (#404)
Dependencies
- Bump gl-native to v10.0.0-rc.1, common to v14.0.1 (#399)
10.0.0-beta.21- June 3, 2021
Breaking changes ⚠️
- Align load style functions for MapboxMap and Snapshotter. (#371)
- Change the default ambient cache path to
.mapbox/maps/ambient_cache.db(#373) - Move text-font property from PointAnnotation to PointAnnotationManager (#375)
- Remove CredentialsManager in favour of ResourceOptionsManager (#365)
- Introduce separate minZoom/maxZoom fields into CustomGeometrySourceOptions API instead of the formerly used "zoomRange"
Features ✨ and improvements 🏁
- Rework setPrefetchZoomDelta to reduce loading of expensive tiles and optimize zoom use-case (#1850)
- Send billing event when Map is loaded
Bug fixes 🐞
- Fixed an issue that causes OnStyleLoaded callback not fired when there's a sprite loading error. (#358)
- Update map camera on first animator update. (#352)
- Fix crash due to missing access token (#365)
- Call style loaded callback if data set directly to geojson. (#377)
- Geojson async data parsing: fixes and improvements. (#380)
- Fix terrain transparency issue when a sky layer is not used
- Make style pack resources immutable protecting the style pack from getting out of sync in case the style is updated remotely
Dependencies
- Bump glNative to 10.0.0-beta.23, common to 13.0.0 (#362)
- Bump mapbox-events-android to latest releases telem-7.0.3 and core-4.0.2 (#370)
10.0.0-beta.20 - May 20, 2021
Breaking changes ⚠️
- Introduce ResourceOptionsManager to configure the default resource options, and removed the xml configuration options for cache path and tile store path. (#339)
- Rename default ambient cache database to mapbox/maps/ambient_cache.db (#314)
- Remove the usage of asset path from the codebase, as it is not useful in Android Maps SDK. (#334)
- Rename
NetworkConnectivitytoOfflineSwitch. - Remove
TileLoadOptionsfromTileRegionLoadOptions.networkRestrictionandacceptExpiredcan now be specified directly inTileRegionLoadOptions. - Add
totalBytesandtransferredBytesto TileStoreLoadResult. MapboxMap.setBoundsreturn type changed from Void to Expected.- Expose tileset version for sources that use TileJSON metadata.
- ResourceRequest
offline-databoolean field is replaced with thesourcestring field, which whether the response came from network, cache or tile store. - Remove
Style.getStyleGeoJSONSourceClusterLeaves,Style.getStyleGeoJSONSourceClusterExpansionZoom,Style.getStyleGeoJSONSourceClusterChildren. All those can be fully replaced byMapboxMap.queryFeatureExtensions. - Parsing geojson on a worker thread. Using DSL GeoJsonSource builders with the following functions
GeoJsonSource.Builder#feature,GeoJsonSource.Builder#featureCollection,GeoJsonSource.Builder#geometrywill immediately returns GeoJsonSource with no data set and starts preparing actual data using a worker thread. The data will be set to the GeoJsonSource once parsed. (#327)
Features ✨ and improvements 🏁
- Add a
cameraOptions(cameraState, builderBlock)inline method that helps mutate an existingCameraStateobject. (#317) - Add selected state handling to annotation plugin (#316)
- Add API for disabling vertical/horizontal scroll gestures (#319)
- Introduce API to enable render cache feature that could bring up rendering performance improvement. (#326)
- Add
removeAnnotationManagerAPI. (#330) - Improve terrain's rendering performance
- Set
beginandendtimestamps for StyleLoaded and MapLoaded events, so that developers could check how much time it takes to load style and map, respectively - Added
tile-requests-delayandtile-network-requests-delayruntime source properties - an API for tile requests delay - Introduce MapOptions.optimizeForTerrain option that allow style rendering optimizations for terrain rendering
- The
text-line-heightis now data-driven property - MapLoaded, StyleLoaded and StyleDataLoaded events now contain begin and end timestamps reflecting the effective duration timespan
- When line lablels are inside the flip state retaining range (+/- 5 degrees around the vertical direction), the lables' flip state will be kept the same
- Improve rendering quality of fill outlines when using render cache
Bug fixes 🐞
- Fix scalebar doesn't refresh issue. (#331)
- Trigger nested high-level animator listener correctly. (#335)
- Make compass visible when camera was mutated while compass was disabled. (#322)
- Enable LocationComponent automatically when style loaded; fix null island location puck (#333)
- Fix crash if the belowLayerId doesn't exist on the current style (#330)
- Fixed an issue that style pack download cancels pending tileset descriptor resolving, now tile region loading and style pack loading can work in parallel.
- Fixed the excessive network usage during map browsing caused by losing of the expiration date and the etag for the cached files
- Fix excessive network usage for delayed tile requests
- On style pack update we reset only glyphs and only when the updated options require less glyphs than currently available and we make sure ambient cache size limit is never exceeded
- Emit
StyleDataLoadedandSourceDataLoadedsynchronously if possible, so that developers could modify style and sources before map starts rendering style - Fix occasional Adreno 640 and 620 driver warnings and deadlock when terrain is used
- Fix rendering order of transparent terrain proxy tiles
Dependencies
- Update telemetry (v7.0.1) and core (v4.0.1) dependencies to latest major version releases (#337)
- Bump gl-native to v10.0.0-beta.22 and common to v12.0.0. (#338)
10.0.0-beta.19 - May 5, 2021
Breaking changes ⚠️
- Remove temporary CustomMapInterface used for testing, obsolete with having interface inheritance from upstream. (#296)
- Align MapCameraManagerDelegate with MapCameraManagerInterface (#293)
- Refactor CameraOptions and change
MapboxMap.getCameraStatemethod to return non-nullable CameraState record - Remove
MapboxMap.getMinZoom,MapboxMap.getMaxZoomandMapboxMap.getScalemethods that are duplicate of functionality provided byMapboxMap.getBounds.MapboxMap.getBoundsreturns new CameraBounds type with non-nullable fields. - Remove
MapboxMap.setDefaultFramebufferObject. - Remove
MapboxMap.dumpDebugLog. - Remove
isPanning,isRotating,isScalingandcancelTransitionsmethods from MapboxMap. Controlling map animations should be done with camera animation plugin. - Remove following methods from MapCameraManagerDelegate (formerly MapCameraDelegate): getLan(), getLon(), getPitch(), getBearing(), getPadding(), setBearing(double). Those properties could be accessed now from MapCameraManagerDelegate.cameraState directly.
OfflineManager and CacheManager
- Introduce TileStoreUsageMode enum and use it in resource options. New enum allows to set tile store usage mode in an non ambiguous way.
- Cache manager asynchronous calls complete even after the cache manager instance gets out of scope on the client side. Fix possible crash on setDatabasePath() call
- CacheManager::prefetchAmbientCache() semantics is updated
Features ✨ and improvements 🏁
- Add styleUri property in MapInitOptions (#287)
- Refactored plugin system to have more granular control over which plugins are loaded when creating a MapView programmatically. (#231)
- Instrument tests for offline (#290)
- Cleanup kdoc documentation, remove html tags (#305)
- Reduce GPU memory usage by reusing depth stencil buffer for terrain rendering
Bug fixes 🐞
- Request layout when updating ornaments margins, making updates immediate (#292)
- Remove runtime plugin dependency for legacy location plugin. (#295)
- Fix an issue that causes the extension functions not discoverable from downstream projects. (#299)
- Style and map error loading listeners are only called for the style that was associated to the listeners when style loading started. This avoid calling the wrong listeners with multiple style loads. Renamed Style#isStyleLoadInited to Style#isStyleLoadInitiated. (#300)
- Fix crash if doing setCamera during map loading (#310)
- Fix map rendering issue when
text-field's inline images used with complex case expressions - Fix erroneous font eviction when
text-field's formatted sections havetext-fontoverrides - Fix Adreno specific crash that happens when terrain is enabled
- Fix OfflineManager network errors handling
- Fix map rendering issue when feature-state and terrain features are enabled
- The ResourceRequest event response.offline-data field now indicates whether or not the response came from tile store
Dependencies
- Bump to gl-native v10.0.0-beta.21, update common v11.0.2. (#304)
10.0.0-beta.18 - April 22, 2021
Breaking changes ⚠️
- Rename MapView plugin extension functions. (#272)
- mapView.getAnnotationPlugin() -> mapView.annotations
- mapView.getGesturesPlugin() -> mapView.gestures
- mapView.getOverlayPlugin() -> mapView.overlay() // using function here because of experimental annotation
- mapView.getLocationComponentPlugin() -> mapView.location
- mapView.getCameraAnimationsPlugin() -> mapView.camera
- mapView.getAttributionPlugin() -> mapView.attribution
- mapView.getCompassPlugin() -> mapView.compass
- mapView.getLogoPlugin() -> mapView.logo
- mapView.getScaleBarPlugin() -> mapView.scalebar
- Remove deprecated location plugin (#276)
- Add feature sdk initialisation (#269)
- Load the Mapbox Street style by default if user doesn't load any style before the onStart lifecycle event.
- Introduce
CredentialsManagerto manage mapbox access token, when allMapViews should use same token could be handled by usingCredentialsManager.sharedstatic object. - Introduce
MapInitOptionsto replace MapboxMapOptions.
Features ✨ and improvements 🏁
- High-level animations return cancelable interface (#262)
- Introduce OfflineManager API that manages style packs and produces tileset descriptors for the tile store.
- By default, users may download up to 250MB of data for offline use without incurring additional charges. This limit is subject to change during the beta.
- The new API replaces the deprecated OfflineRegionManager API. The OfflineManager API can be used to create offline style packs that contain style data, such as: style definition, sprites, fonts and other resources. Tileset descriptors created by the OfflineManager API are used to create tile packs via TileStore API. Mobile maps SDKs use tile packs for rendering map content.
- Add offline activity example. (#259)
- Load the Mapbox Street style by default if user doesn't load any style before the onStart lifecycle event(#248)
Bug fixes 🐞
- Keep CompassPlugin enabled/disabled state after other properties update (#252)
- Fix disabling logo in xml. (#273)
- Introduce StyleInterface that include the current display's pixel ratio, and fix Style#addImage to take the correct pixel ratio from display. (#228)
- Properly reset anchor after some gestures。 (#279)
- Remove animator cancel listeners logic duplicating end listeners logic. (#280)
Dependencies
- Bump gl-native to v10.0.0-beta.20, common to v11.0.1 (#261)
10.0.0-beta.17 - April 14, 2021
Breaking changes ⚠️
- [Annotation plugin] Rename annotation classes, the rules are as follows and applied for Annotations/Options/Managers (#227)
- Symbol -> PointAnnotation
- Circle -> CircleAnnotation
- Line -> PolylineAnnotation
- Fill -> PolygonAnnotation
- mapboxMap.queryRenderedFeatures will return a new data class QueriedFeature which will contain additional properties (#247):
- source (id of the source)
- sourceLayer (id of the source's layer)
- state (feature's state)
- Rename Style#isStyleFullyLoaded to Style#isStyleLoaded
- Remove old map#drag API and the AnimationOptions API
- Don't emit MapIdle event when there is gesture and / or user animation in progress
- Make overlay plugin experimental (#233)
Features ✨ and improvements 🏁
- Introducing NetworkConnectivity API (offline switch). If setting setMapboxStackConnected(false), the Reachability API will report NotReachable, http requests are being blocked and if running, cancelled.
- Added new CameraManager.cameraForCoordinates overload
- Added support for query rendered features for Circle Layer on Terrain
- Enable identical code folding and -lto-O3 optimizations to reduce binary size of native map shared library
Bug fixes 🐞
- Fix runtime crash if logo / attribution not enabled (#240)
- Fixed a bug that causes map not loading when connected through ethernet.
- Fix distance expression parsing for geometries containing over 20k points
- Fixed holes in the ground for terrain with negative elevation
- Make StyleImageMissing callback a no-op after ImageManager destruction
- Reset unprocessed event queue for destructed renderer
- Fix clipping of fill-extrusions on near plane
- Set 'clusterMaxZoom' to be 'maxZoom-1' when it is not provided
- Fix crash for the case when MapSnapshotter object is destructed from within user provided callback
- Terrain render cache now disabled during property transitions
- Fix missing terrain tiles when camera is on mountain peak
- Black screen not used during loading anymore, prefering platform background
- Emit CameraChanged, SourceAdded(Removed) and StyleImageMissing events synchronously
Dependencies
- [deps] Bump gl-native to v10.0.0-beta.19, common to v11.0.0 (#247)
10.0.0-beta.16 - March 25, 2021
Breaking changes ⚠️
- Remove ModelLayer and ModelSource API (#128)
- Refactor Event API into new Observers. (#166)
- Bump minSdkVersion of the SDK to 21, and bumped okhttp dependency to v4.9.0. (#176)
- Rename jumpTo(options: CameraOptions) to setCamera(options: CameraOptions), rename setFreeCameraOptions (options: FreeCameraOptions) to setCamera(options: FreeCameraOptions). (#176)
- Rename OnMapLoadingFinishedListener to OnMapLoadedListener. (#176)
- Introduce OnStyleDataLoadedListener to replace OnStyleLoadingFinishedListener, and introduce OnSourceDataLoadedListener to replace OnSourceChangedListener. So that developers have granular control of style/source loading status. (#176)
- Introduce coordinateBoundsForCamera() API to replace the getRegion() API. (#176)
- Remove MapObserver from MapSurface's constructor. (#200)
Features ✨ and improvements 🏁
- [Annotation plugin] Add symbol cluster support (#122)
- [map] Make public API entry points as MapView and Snapshotter (#149)
- [plugins] Remove PluginRequirementException (#158)
- Use String protocol for passing GeoJSON data (#162)
- [Annotation plugin] Set default values for annotation option properties to null. (#173)
- [rendering] Schedule non-rendering tasks on Android's scheduler to improve render performance. (#176)
- [rendering] Query rendered features now work for fill-extrusions when terrain is enabled. (#176)
- [rendering] Improved terrain rendering performance due to reduction of loaded tiles. (#176)
- [doc] Change http link to markdown style in doc (#187)
- [rendering] Differentiate render tasks and non-render tasks (#192)
- [gestures] Introduce platform-driven drag API to move a map (#201)
Bug fixes 🐞
- [Annotation plugin] Implement MapStyleObserverPlugin to listen style load event to reload layer and source (#161)
- [gestures] Fix crash if zooming for SDK less than 23 (#171)
- Fix an issue that will result in map not rendering on a device with Ethernet connection. (#176)
- Fix the crash when running maps on the emulator. (#176)
- Patch scroll gesture with a pitched camera (#184)
- [locationcomponent] Fix jitter animations if interrupting animations (#185)
- [animation] Fix zero duration animators, fix medium-level animators to use only CameraAnimators (#198)
- [animations] Fix interpolation for flyTo (#202)
Dependencies
- Update minSdkVersion of the SDK to 21, and bumped okhttp dependency to v4.9.0. (#176)
- Update gl-native to v10.0.0-beta.17, common to v10.0.2 (#176)
10.0.0-beta.15 - March 5, 2021
Bugs
- [annotation] Fix text-font issue in annotation plugin. (#144)
Dependencies
- [gl-native] Update to v10.0.0-beta.16, common to beta.12 (#137)
10.0.0-beta.14 - February 24, 2021
Breaking changes
- [map] Change signature of Map#getElevation from Float to Double #120
- [map] Fixed text-field strings are now returned as formatted expressions #120
- [annotation] Rename getAnnotationManger to createAnnotationManager #105
- [style] GeoJsonSource data property can't be empty #120
Features
- [location-component] Add isLocatedAt API to location component plugin #99
- [snapshot] Introduce interfaces for style events and snapshot result #124
- [annotation] Process anchor animators correctly #109
- [annotation] Limit adding style images multiple times for annotations #118
- [annotation] Add GeoJSONOptions configuration #79
- [annotation] Show all icons and text from annotation manager by default #115
- [animation] Add kotlin dsl builder for CameraOptions and java builders for CameraAnimatorOptions and MapAnimationOptions #90
- [map] Better use of Choreographer inside renderer resulting to smoother map animations #107
- [gestures] change default interpolator from Decelerate to LinearOutSlowIn #103
Bugs
- [compass] Hide the compass on startup when facing north #116
- [annotation] Change default value of text font for symbols to null #111
- [map] Remove renderStill from public API #104
- [style] Rename reference to style plugin and converting them to style extension #123
- [annotation] Expose collection of annotations as a List instead of Map #121
- [camera] Trigger map camera change updates immediately, Fix order of animation callbacks in camera animation plugin #125
Dependencies
10.0.0-beta.13 - February 10, 2021
Features
- [map] Expose FPS listener #80
- [annotation] Add convenience color int API #76
- [annotation] Add convenience bitmap API for symbols #67
- [annotation] Make getting annotation manager configurable #47
- [location] Improve the default location provider and improve handling of location updates #58
- [location] Add OnIndicatorPositionChangedListener and OnIndicatorBearingChangedListener #56
Bugs
- [map] allow getSourceAs returning null values, handle cast gracefully #88
- [animation] remove internal plugin singleton, support multi display maps #70
- [telemetry] correct versioning of BuildConfig #65
- [annotation] Fix offset array not working issue #60
- [plugin] make xml attribute parsers internal #81
Dependencies
10.0.0-beta.12 - January 27, 2021
Announcement
V10 is the latest version of the Mapbox Maps SDK for Android. 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
Style
- Currently there is no compile-time validation of the Style DSL, exceptions will be thrown in runtime.
Location
- Location component plugin is still under active development and the interfaces are subject to change.
3D Terrain
- 3D Terrain is in an experimental state
- 3D Terrain crashes on specific GPU hardware:
- Qualcomm Adreno 640
Other
- Annotation plugin is not feature complete with the old implementation
- Restricting the map to a bounds that includes the antemeridian will result in an invalid jump to the left side of the bounds.
- Known deficiencies with max and min zoom map properties
- An invalid LatLng conversion can occur and produce a native crash
- Native crash when resuming the map in specific situations
- Native crash when performing a camera transition using Map#jumpTo