Mapbox Maps Android Versions Save

Interactive, thoroughly customizable maps in native Android powered by vector tiles and OpenGL.

v10.18.0

1 week ago

10.18.0 May 23, 2024

Bug fixes 🐞

  • Reduce unnecessary usage of main thread during lifecycle monitoring.
  • 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 v10.18.0 and common to v23.10.0.

v11.4.0

1 week ago

11.4.0 May 22, 2024

Breaking changes ⚠️

  • [compose] Remove locationComponentSettings from MapboxMap composable function, MapEffect with 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 introduce TileCacheBudget(TileCacheBudgetInMegabytes) and TileCacheBudget(TileCacheBudgetInTiles) constructor instead.
  • [compose] Remove layoutParams from ViewAnnotation composable function, the internal ComposeView wrapping the ViewAnnotation.content will always use WRAP_CONTENT; In case of tests where the assertion happens before the measure, user can force the content size using ViewAnnotationOptions.width/height APIs.
  • [compose] Constructor in PromoteId data class from compose now takes PropertyName and optional SourceId instead of itself.
  • [compose] Use new SlotsContent instead of generic Map to handle the style content for slots. Introduced slotsContent builder function.
  • [compose] Use new LayerPositionedContent instead of generic Map to handle the layer positioned style content. Introduced layerPositionedContent builder function.
  • [compose] Use new StyleImportsConfig instead of generic Map to handle the style import configurations. Introduced styleImportsConfig builder function.
  • [compose] Move MapboxStandardStyle to a different package and introduce LightPreset with available presets as constants.
  • [compose] MapViewportState properties cameraState, mapViewportStatusChangedReason and mapViewportStatus are null when the state is not attached to a map.
  • [compose] MapViewportState constructor parameter has been renamed to initialCameraState.

Features ✨ and improvements 🏁

  • [compose] Add AtmosphereState parameter to GenericStyle composable function.
  • [compose] Introduce Projection and AtmosphereState API on MapStyle and MapboxStandardStyle.
  • [compose] Add StyleImage to construct following image layer properties: IconImage, FillPattern, LinePattern, BearingImage, ShadowImage, TopImage.
  • [compose] Add ModelId constructor to add model id and uri.
  • [compose] Add TerrainState parameter to GenericStyle, MapStyle and MapboxStandardStyle composable functions.
  • Introduce addStyleImportFromJSON, addStyleImportFromURI, updateStyleImportWithJSON, updateStyleImportWithURI, moveStyleImport APIs to MapboxMap and Style.
  • Handle updating geo-json data exceptions and propagate them to MapboxMap.subscribeMapLoadingError(mapLoadingErrorCallback).
  • Introduce SlotLayer in Style DSL.
  • Add statistics for graphics pipeline program creation.
  • Enable raster-elevation for tiled raster sources.
  • Improve tile processing performance by filtering out tiny polygon holes.
  • Reduce number of evaluations of step expression in line-gradient properties.
  • Add support for line-trim-offset with line-pattern.
  • Enable two dimensional data handling in Mapbox Raster tiles.
  • Trim zoom ranges for the style at tileset descriptor resolving.
  • Extend SymbolLayer.iconColorSaturation range 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.styleSlots allowing to get the ordered list of slots.
  • Deprecate MapboxMap.cameraForCoordinateBounds, MapboxMap.cameraForGeometry and some synchronous overloaded MapboxMap.cameraForCoordinates in favour of single synchronous, asynchronous and suspend MapboxMap.cameraForCoordinates. Synchronous MapboxMap.cameraForCoordinates returns empty camera (could be checked with CameraOptions.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.setSnapshotLegacyMode function to help avoiding MapView.snapshot native crash on some Samsung devices running Android 14.
  • Add experimental RasterParticleLayer in Style DSL and Compose.
  • Add mapView.location.slot API to assign a slot for the location indicator.

Bug fixes 🐞

  • [compose] Fix an issue with rememberGeoJsonSourceState, where the Value and GeoJsonData can not be serialised.
  • [compose] Remember default ComposeMapInitOptions and GesturesSettings so that we don't reconstruct these classes when MapboxMap recomposes.
  • [compose] Filter relevant events for ViewAnnotation.onUpdatedListener and skip events from other view annotations.
  • [compose] Do not consume tap event for Compass, so that user set clickable can 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.Value for SourceState.
  • [compose] Queue viewport operations when the MapViewportState is no yet attached to the map, to avoid losing events.
  • Fix Snapshotter.cameraForCoordinates arguments padding, bearing and pitch to 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.logoEnabled not being in sync with MapView.logo.enabled state.
  • 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.

v11.4.0-rc.2

2 weeks ago

11.4.0-rc.2 May 15, 2024

Breaking changes ⚠️

  • [compose] MapViewportState properties cameraState, mapViewportStatusChangedReason and mapViewportStatus are null when the state is not attached to a map.
  • [compose] MapViewportState constructor parameter has been renamed to initialCameraState.

Bug fixes 🐞

  • [compose] Queue viewport operations when the MapViewportState is no yet attached to the map, to avoid losing events.
  • Fix LogoView.logoEnabled not being in sync with MapView.logo.enabled state.
  • 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.

v10.17.1

3 weeks ago

10.17.1 May 10, 2024

Features ✨ and improvements 🏁

  • Add experimental MapView.setSnapshotLegacyMode function to help avoiding MapView.snapshot native crash on some Samsung devices running Android 14.

Bug fixes 🐞

  • Fix memory leak when camera animations are skipped.

v11.4.0-rc.1

3 weeks ago

11.4.0-rc.1 May 08, 2024

Features ✨ and improvements 🏁

  • [compose] Add StyleImage to construct following image layer properties: IconImage, FillPattern, LinePattern, BearingImage, ShadowImage, TopImage.
  • [compose] Add ModelId constructor to add model id and uri.
  • [compose] Add TerrainState parameter to GenericStyle, MapStyle and MapboxStandardStyle composable functions.
  • Add experimental RasterParticleLayer in Style DSL and Compose.
  • Add mapView.location.slot API 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.

v11.4.0-beta.3

3 weeks ago

11.4.0-beta.3 May 06, 2024

Features ✨ and improvements 🏁

  • Add experimental MapView.setSnapshotLegacyMode function to help avoiding MapView.snapshot native 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.Value for SourceState.

Dependencies

  • Update common to v24.4.0-beta.3.

v11.4.0-beta.2

1 month ago

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.

v11.4.0-beta.1

1 month ago

11.4.0-beta.1 April 29, 2024

Breaking changes ⚠️

  • [compose] Remove locationComponentSettings from MapboxMap composable function, MapEffect with 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 introduce TileCacheBudget(TileCacheBudgetInMegabytes) and TileCacheBudget(TileCacheBudgetInTiles) constructor instead.
  • [compose] Remove layoutParams from ViewAnnotation composable function, the internal ComposeView wrapping the ViewAnnotation.content will always use WRAP_CONTENT; In case of tests where the assertion happens before the measure, user can force the content size using ViewAnnotationOptions.width/height APIs.
  • [compose] Constructor in PromoteId data class from compose now takes PropertyName and optional SourceId instead of itself.
  • [compose] Use new SlotsContent instead of generic Map to handle the style content for slots. Introduced slotsContent builder function.
  • [compose] Use new LayerPositionedContent instead of generic Map to handle the layer positioned style content. Introduced layerPositionedContent builder function.
  • [compose] Use new StyleImportsConfig instead of generic Map to handle the style import configurations. Introduced styleImportsConfig builder function.
  • [compose] Move MapboxStandardStyle to a different package and introduce LightPreset with available presets as constants.

Features ✨ and improvements 🏁

  • [compose] Add AtmosphereState parameter to GenericStyle composable function.
  • [compose] Introduce Projection and AtmosphereState API on MapStyle and MapboxStandardStyle.
  • Introduce addStyleImportFromJSON, addStyleImportFromURI, updateStyleImportWithJSON, updateStyleImportWithURI, moveStyleImport APIs to MapboxMap and Style.
  • Handle updating geo-json data exceptions and propagate them to MapboxMap.subscribeMapLoadingError(mapLoadingErrorCallback).
  • Introduce SlotLayer in Style DSL.
  • Add statistics for graphics pipeline program creation.
  • Enable raster-elevation for tiled raster sources.
  • Improve tile processing performance by filtering out tiny polygon holes.
  • Reduce number of evaluations of step expression in line-gradient properties.
  • Add support for line-trim-offset with line-pattern.
  • Enable two dimensional data handling in Mapbox Raster tiles.
  • Trim zoom ranges for the style at tileset descriptor resolving.
  • Extend SymbolLayer.iconColorSaturation range 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.styleSlots allowing to get the ordered list of slots.
  • Deprecate MapboxMap.cameraForCoordinateBounds, MapboxMap.cameraForGeometry and some synchronous overloaded MapboxMap.cameraForCoordinates in favour of single synchronous, asynchronous and suspend MapboxMap.cameraForCoordinates. Synchronous MapboxMap.cameraForCoordinates returns empty camera (could be checked with CameraOptions.isEmpty) if the map's size is not yet calculated.

Bug fixes 🐞

  • [compose] Fix an issue with rememberGeoJsonSourceState, where the Value and GeoJsonData can not be serialised.
  • [compose] Remember default ComposeMapInitOptions and GesturesSettings so that we don't reconstruct these classes when MapboxMap recomposes.
  • [compose] Filter relevant events for ViewAnnotation.onUpdatedListener and skip events from other view annotations.
  • [compose] Do not consume tap event for Compass, so that user set clickable can 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.cameraForCoordinates arguments padding, bearing and pitch to 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-rc.1.

v11.3.1

1 month ago

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.

v11.3.0

1 month ago

11.3.0 April 11, 2024

Breaking changes ⚠️

  • [compose] Introduce experimental ComposeMapInitOptions and remove mapInitOptionsFactory.
  • [compose] Replace experimental MapboxMap.compassSettings, MapboxMap.scaleBarSettings, MapboxMap.logoSettings, MapboxMap.attributionSettings with composable functions in dedicated scopes: MapCompassScope.Compass(), MapScaleBarScope.ScaleBar(), MapLogoScope.Logo(), MapAttributionScope.Attribution().

Features ✨ and improvements 🏁

  • [compose] Add layerPosition support in GenericStyle composable function.
  • [compose] Add layer transition properties.
  • [compose] Add contentPadding to map ornament composable functions(e.g. Compass, Logo, Attribution, ScaleBar).
  • [compose] Introduce experimental MapStyle, MapboxStandardStyle, GenericStyle composable 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 GenericStyle composable function.
  • Expose MapInitOptions.mapName (mapbox_mapName in 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 SdkInformationQuery to expose sdk version information.
  • Enable TileStore delta updates by default for Maps domain.
  • Add TileStore.estimateTileRegion API for estimating Tile Region downloads and storage size.

Bug fixes 🐞

  • [compose] Fix a bug introduced in 11.3.0-beta.1 where AnnotationGroup items updates were skipped.
  • [compose] Fix ViewAnnotation not cleared when it leaves composition.
  • [compose] Fix the IndexOutOfBoundsException because of RootNode of MapboxMap node 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.Builder when calling ViewAnnotationOptions.Builder.annotationAnchor extension 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.SHARED is used (e.g. in AndroidAuto extension).
  • Fix map being black on some zoom levels when ContextMode.SHARED is 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 queryRenderedFeatures with 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.onAvailabilityChanged callback 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.