Releases: mapbox/mapbox-maps-android
Releases · mapbox/mapbox-maps-android
v11.7.3
v11.8.0
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)
.RenderedQueryGeometry
being NULL is equivalent to passing a bounding box encompassing the entire map viewport. - [compose] Change the signature of experimental
MapState.queryRenderedFeatures(RenderedQueryGeometry, TypedFeaturesetDescriptor, Expression?): List
toMapState.queryRenderedFeatures(TypedFeaturesetDescriptor, RenderedQueryGeometry?, Expression?): List
.RenderedQueryGeometry
being NULL is equivalent to passing a bounding box encompassing the entire map viewport.
Features ✨ and improvements 🏁
- Introduce
Style.STANDARD_EXPERIMENTAL
style 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
OnClusterClickListener
andOnClusterLongClickListener
forCircleAnnotationManager
andPointAnnotationManager
. These callbacks receive the clicked cluster represented by aClusterFeature
. - Introduce experimental
getStyleGlyphURL
/setStyleGlyphURL
functions forMapboxMap
andStyle
. - Make
fill-extrusion-emissive-strength
property 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_DELAY
mode. - Overscale composited tile components in offline.
- Skip rendering landmarks when the camera is inside them.
- Introduce experimental Geofencing API. Implementation examples: SimpleGeofencingActivity.kt and ExtendedGeofencingActivity.kt.
- Introduce experimental
MapView.attribution.getMapAttributionDelegate().extraAttributions
to add custom attributions to the attribution dialog. - [compose] Deprecate all
Annotation
andAnnotationGroup
composables that takeonClick
parameter. Now all annotation interactions could be set with appropriateAnnotationInteractionsState
orAnnotationGroupInteractionsState
stored inAnnotationGroupState
. - [compose] Introduce
AnnotationInteractionsState
andAnnotationGroupInteractionsState
states that allow to set callbacks for annotation interactions viaonClicked()
andonLongClicked()
.PointAnnotationGroupInteractionsState
andCircleAnnotationGroupInteractionsState
also provide ability to set callbacks for interactions with clusters viaonClusterClicked
andonClusterLongClicked
. - [compose] Introduce
remember
(e.g.rememberPolylineAnnotationGroupInteractionsState
andrememberPolylineAnnotationInteractionsState
) composable functions to create, init and remember all types ofAnnotationInteractionsState
andAnnotationGroupInteractionsState
. - [compose] Introduce
<AnnotationType>InteractionsState.isDraggable
/<AnnotationType>GroupInteractionsState.isDraggable
API 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-offset
change. - Respect polygons with holes on querying rendered features.
- Fix self-overlap of line corners when large
line-width
is 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
reduceMemoryUse
is called before taking snapshot. - Fix the incorrect behaviour when using
symbol-z-oder
property. - Fix
raster-particle
trail discontinuity at the antimeridian. - Fix an Android 12 specific bug where location puck custom animator options lambda without explicit
ValueAnimator.duration
resulted induration = 0
. - Fix a rare
android.content.res.Resources$NotFoundException
happening when creating aMapView
. - Fix a rare
NullPointerException
happening when fling gesture event is recognized. - Fix
StandardPoiFeature.geometry
to have a concretePoint
type instead ofGeometry
interface. - Fix a bug in
GeoJsonSource.autoMaxZoom
leading 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.
v11.7.2
v11.8.0-rc.1
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.duration
resulted induration = 0
. - Fix a rare
android.content.res.Resources$NotFoundException
happening when creating aMapView
. - Fix a rare
NullPointerException
happening when fling gesture event is recognized. - Fix
StandardPoiFeature.geometry
to have a concretePoint
type instead ofGeometry
interface. - Fix a bug in
GeoJsonSource.autoMaxZoom
leading 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.
v11.8.0-beta.1
11.8.0-beta.1 October 14, 2024
Features ✨ and improvements 🏁
- Introduce
Style.STANDARD_EXPERIMENTAL
style 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
OnClusterClickListener
andOnClusterLongClickListener
forCircleAnnotationManager
andPointAnnotationManager
. These callbacks receive the clicked cluster represented by aClusterFeature
. - Introduce experimental
getStyleGlyphURL
/setStyleGlyphURL
functions forMapboxMap
andStyle
. - Make
fill-extrusion-emissive-strength
property 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_DELAY
mode. - Overscale composited tile components in offline.
- Skip rendering landmarks when the camera is inside them.
- Introduce experimental Geofencing API. Implementation example: GeofencingActivity.kt
- [compose] Deprecate all
Annotation
andAnnotationGroup
composables that takeonClick
parameter. Now all annotation interactions could be set with appropriateAnnotationInteractionsState
orAnnotationGroupInteractionsState
stored inAnnotationGroupState
. - [compose] Introduce
AnnotationInteractionsState
andAnnotationGroupInteractionsState
states that allow to set callbacks for annotation interactions viaonClicked()
andonLongClicked()
.PointAnnotationGroupInteractionsState
andCircleAnnotationGroupInteractionsState
also provide ability to set callbacks for interactions with clusters viaonClusterClicked
andonClusterLongClicked
. - [compose] Introduce
remember
(e.g.rememberPolylineAnnotationGroupInteractionsState
andrememberPolylineAnnotationInteractionsState
) composable functions to create, init and remember all types ofAnnotationInteractionsState
andAnnotationGroupInteractionsState
. - [compose] Introduce
<AnnotationType>InteractionsState.isDraggable
/<AnnotationType>GroupInteractionsState.isDraggable
API 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. - Introduce experimental
MapView.attribution..getMapAttributionDelegate().extraAttributions
to add custom attributions to the attribution dialog.
Bug fixes 🐞
- Improve zooming performance on dynamic Standard terrain and optimize terrain re-rendering performance on e.g routeline
line-trim-offset
change. - Respect polygons with holes on querying rendered features.
- Fix self-overlap of line corners when large
line-width
is 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
reduceMemoryUse
is called before taking snapshot. - Fix the incorrect behaviour when using
symbol-z-oder
property. - Fix
raster-particle
trail discontinuity at the antimeridian.
Dependencies
- Update gl-native to v11.8.0-beta.1 and common to v24.8.0-beta.1.
v11.7.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.
v11.7.0
11.7.0 September 26, 2024
Features ✨ and improvements 🏁
- [compose] Introduce
PointAnnotationState.iconOcclusionOpacity
,PointAnnotationState.textOcclusionOpacity
to control occlusion opacity for individual point annotation. - [compose] Remove
MapboxExperimental
fromPolylineAnnotationGroupState.lineOcclusionOpacity
,PointAnnotationGroupState.iconOcclusionOpacity
,PointAnnotationGroupState.textOcclusionOpacity
. - [compose] Expose data-driven properties on
AnnotationGroupState
s. Now it's possible to set data-driven properties globally onAnnotationGroupState
and specify per-annotation overrides inAnnotationState
. Setting global property value onAnnotationGroupState
could introduce performance improvements when the amount of annotations is large. - [compose] Remove experimental
ModelLayerState.modelFrontCutoff
. - [compose] Introduce experimental
GeoJsonSourceState.autoMaxZoom
property to resolve rendering artifacts for features that use wide blur (e.g. fill extrusion ground flood light or circle layer). - [compose] Introduce experimental
ClipLayerState.clipLayerScope
API to remove data from certain style fragments only. - [compose] Introduce experimental
PointAnnotationState.symbolZOffset
property. - [compose] Introduce experimental
PointAnnotationGroupState.symbolElevationReference
property. - [compose] Introduce experimental
SymbolLayerState.symbolElevationReference
andSymbolLayerState.symbolZOffset
properties. - [compose] Introduce experimental
SymbolLayerState.symbolZOffsetTransition
API. - [compose] Introduce experimental
StyleInteractionsState
,StyleImportsInteractionsState
,LayerInteractionsState
to handle interactions to the style, style imports and layers. - [compose] Introduce experimental
StyleImport
composable functions to acceptStyleImportsInteractionsState
as an parameter. - [compose] Introduce experimental
LayerInteractionsState
as part of*LayerState
of layers that's driven by a source. - [compose] Introduce experimental
MapState.getFeatureState
,MapState.setFeatureState
,MapState.removeFeatureState
andMapState.resetFeatureState
APIs. - [compose] Introduce
StyleState
that groupsStyleImportsConfig
,StyleInteractionsState
,Projection
,AtmosphereState
,TerrainState
,LightsState
,styleTransition
. - [compose] Introduce
GenericStyle
composable function that usesStyleState
as parameter and deprecateGenericStyle
that takes individual light/terrain/projection states. - [compose] Introduce
MapStyle
composable function that usesStyleState
as parameter and deprecateMapStyle
that takes individual light/terrain/projection states. - [compose] Introduce
StyleImportState
that groupsImportConfigs
andStyleImportInteractionsState
. - [compose] Introduce
StyleImport
composable function that usesStyleImportState
as parameter and deprecateStyleImport
that takesImportConfigs
. - Publish Mapbox Maps Android artifacts using NDK 27 and support for 16 KB page sizes.
- The new artifacts are available by appending
-ndk27
to 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
lineTrimColor
andlineTrimFadeRange
onLineLayer
which allow to set custom color for trimmed line and fade effect for trim. Update navigation example to use those properties. - Introduce
PointAnnotation.iconOcclusionOpacity
,PointAnnotation.textOcclusionOpacity
to control occlusion opacity for individual point annotation. - Remove
MapboxExperimental
fromSymbolLayer.iconOcclusionOpacity
,SymbolLayer.textOcclusionOpacity
and these properties are now supported on global zoom levels with default value changed to0
. - Remove
MapboxExperimental
fromPolylineAnnotationManager.lineOcclusionOpacity
,PointAnnotationManager.iconOcclusionOpacity
,PointAnnotationManager.textOcclusionOpacity
. - Expose data-driven properties on
AnnotationManager
s. Now it's possible to set data-driven properties globally onAnnotationManager
and specify per-annotation overrides. Setting global property value onAnnotationManager
could introduce performance improvements when the amount of annotations is large. - Remove experimental
ModelLayer.modelFrontCutoff
. - Introduce experimental
GeoJsonSource.autoMaxZoom
property to resolve rendering artifacts for features that use wide blur (e.g. fill extrusion ground flood light or circle layer). - Introduce static
HttpServiceFactory.setCancellationCallback
API. - Reduce style parsing time.
- Enable multiple meta tiling schemes for composited sources.
- Expose experimental
ClipLayer.clipLayerScope
API to remove data from certain style fragments only. - Expose experimental
PointAnnotation.symbolZOffset
property. - Expose experimental
PointAnnotationManager.symbolElevationReference
property. - Expose experimental
SymbolLayer.symbolElevationReference
andSymbolLayer.symbolZOffset
properties. - Expose experimental
SymbolLayer.symbolZOffsetTransition
API. - Introduce experimental
MapboxMap.queryRenderedFeature
allowing to get anInteractiveFeature
for given geometry,FeaturesetHolder
and optional filter. - Introduce experimental
FillExtrusionLayer.fillExtrusionLineWidth
andFillExtrusionLayerState.fillExtrusionLineWidth
in 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.symbolZOffset
andPolylineAnnotationManager.lineZOffset
- Deprecate
PolylineAnnotationManager.lineTrimColor
in favour ofPolylineAnnotationManager.lineTrimColorString
/PolylineAnnotationManager.lineTrimColorInt
.
Bug fixes 🐞
- [compose] Fix
ViewAnnotation
size not being updated when content layout changes. - [compose] Fix
UnsatisfiedLinkError
issue 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
OnAnnotationInteractionListener
not triggered if anyOnAnnotationClickListener.onAnnotationClick
returns true. - Fix incorrect layer updates when using
ClipLayer.clipLayerTypes
orClipLayerState.clipLayerTypes
in Compose. - Fix shadow rendering issues when using
FillExtrusionLayer.fillExtrusionCutoffFadeRange
orFillExtrusionLayerState.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
allowZElevate
to be true. - Fix race condition between
setFeatureState
andremoveFeatureState
/resetFeatureStates
resulting 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.symbolZOrder
property. - 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.
v11.7.0-rc.1
11.7.0-rc.1 September 16, 2024
Breaking changes ⚠️
- Experimental interactive features API changes:
FeatureStateValue
was removed in favour of genericFeatureState
.MapboxMap.setFeatureState
takes a singleFeatureState
class instead of varargFeatureStateValue
.BaseInteractiveFeature
was removed in favour ofInteractiveFeature
.InteractiveFeature.state
is now a generic ofFeatureState
.MapboxMap.getFeatureState
signature changed to be generic and return typedFeatureState
in the newFeatureStateCallback
.
Features ✨ and improvements 🏁
- Introduce experimental
MapboxMap.queryRenderedFeature
allowing to get anInteractiveFeature
for given geometry,FeaturesetHolder
and optional filter. - Introduce experimental
FillExtrusionLayer.fillExtrusionLineWidth
andFillExtrusionLayerState.fillExtrusionLineWidth
in 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.symbolZOffset
andPolylineAnnotationManager.lineZOffset
- Deprecate
PolylineAnnotationManager.lineTrimColor
in favour ofPolylineAnnotationManager.lineTrimColorString
/PolylineAnnotationManager.lineTrimColorInt
. - [compose] Introduce experimental
StyleInteractionsState
,StyleImportsInteractionsState
,LayerInteractionsState
to handle interactions to the style, style imports and layers. - [compose] Introduce experimental
StyleImport
composable functions to acceptStyleImportsInteractionsState
as an parameter. - [compose] Introduce experimental
LayerInteractionsState
as part of*LayerState
of layers that's driven by a source. - [compose] Introduce experimental
MapState.getFeatureState
,MapState.setFeatureState
,MapState.removeFeatureState
andMapState.resetFeatureState
APIs. - [compose] Introduce
StyleState
that groupsStyleImportsConfig
,StyleInteractionsState
,Projection
,AtmosphereState
,TerrainState
,LightsState
,styleTransition
. - [compose] Introduce
GenericStyle
composable function that usesStyleState
as parameter and deprecateGenericStyle
that takes individual light/terrain/projection states. - [compose] Introduce
MapStyle
composable function that usesStyleState
as parameter and deprecateMapStyle
that takes individual light/terrain/projection states. - [compose] Introduce
StyleImportState
that groupsImportConfigs
andStyleImportInteractionsState
. - [compose] Introduce
StyleImport
composable function that usesStyleImportState
as parameter and deprecateStyleImport
that 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.symbolZOrder
property. - 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.
v11.6.1
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.
v10.18.4
10.18.4 September 06, 2024
Features ✨ and improvements 🏁
- Remove explicit main thread locking when clicking / long clicking / interacting with annotations created with
CircleAnnotationManager
,PointAnnotationManager
,PolygonAnnotationManager
,PolylineAnnotationManager
that could lead to an ANR.