Skip to content

Releases: mapbox/mapbox-maps-android

android-v10.1.0-beta.1

21 Oct 10:04
f7d1b0d
Compare
Choose a tag to compare
Pre-release

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 NullPointerException while 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 promoteId parameter for VectorSource overwritten when source tilejson is loaded. (#752)
  • Avoid spawning extra AssetManagerFileSource threads. (#752)
  • Fix NullPointerException in HttpResponseCallback, 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)

android-v10.0.0

06 Oct 17:08
ada8624
Compare
Choose a tag to compare

10.0.0 October 6, 2021

Breaking changes ⚠️

  • Add @JvmOverloads where applicable to provide better experience for Java users. (#656)

  • Refactor gestures configuration options to be aligned better across platforms. (#672)

    • Rename flingVelocityAnimationEnabled to scrollDecelerationEnabled
    • Rename rotateVelocityAnimationEnabled to rotateDecelerationEnabled
    • Rename scaleVelocityAnimationEnabled to pinchToZoomDecelerationEnabled
    • Rename zoomEnabled to pinchToZoomEnabled and limit its effect to just pinch to zoom
    • Rename panScrollMode to scrollMode
    • Rename zoomRate to zoomAnimationAmount
    • Remove disableRotateWhenScaling
    • Rename increaseRotateThresholdWhenScaling to increaseRotateThresholdWhenPinchingToZoom
    • Rename increaseScaleThresholdWhenRotating to increasePinchToZoomThresholdWhenRotating
    • Split doubleTapToZoomEnabled into doubleTapToZoomInEnabled and doubleTouchToZoomOutEnabled
    • Remove pixelRatio from gesture options (if needed, use the value from map init options so that this option is not duplicated)
    • Rename GesturesSettings#isPanHorizontallyLimited to GesturesSettings#isScrollHorizontallyLimited
    • Rename GesturesSettings#isPanVerticallyLimited to GesturesSettings#isScrollVerticallyLimited
  • Apply geojson data (using data, url, feature, featureCollection, geometry functions) is fully async now. (#699)
    Following APIs are impacted:

    • GeoJsonSource.data(userData) is also setting data using worker thread meaning that if some featureCollection is already parsing - it will be parsed till end, applied to the map and replaced immediately by userData.
    • GeoJsonSource.url(userUrl) is also setting data using worker thread meaning that if some featureCollection is already parsing - it will be parsed till end, applied to the map and replaced immediately by userUrl.
    • Following APIs are changed:
     GeoJsonSource.feature(value: Feature, onDataParsed: ((GeoJsonSource) -> Unit)? = null) => GeoJsonSource.feature(value: Feature)
    
     GeoJsonSource.geometry(value: Geometry, onDataParsed: ((GeoJsonSource) -> Unit)? = null) => GeoJsonSource.geometry(value: Geometry)
    
     GeoJsonSource.featureCollection(value: FeatureCollection, onDataParsed: ((GeoJsonSource) -> Unit)? = null) => GeoJsonSource.featureCollection(value: FeatureCollection)
    
     @SourceDsl
     class Builder(
       val sourceId: String,
       private val onGeoJsonParsed: OnGeoJsonParsed
     )  =>
     @SourceDsl
     class Builder(
       val sourceId: String
     )
    
    • Following APIs are removed:
     interface OnGeoJsonParsed
    
     GeoJsonSource.addOnGeoJsonParsedListener(listener: OnGeoJsonParsed)
    
     GeoJsonSource.removeOnGeoJsonParsedListener(listener: OnGeoJsonParsed)
    
     // DSL function removed
     fun geoJsonSource(
       id: String,
       config: GeoJsonSource.Builder.() -> Unit,
       onGeoJsonParsed: OnGeoJsonParsed
     ): GeoJsonSource = GeoJsonSource.Builder(id, onGeoJsonParsed).apply(config).build()
    
  • Update getLayerAs function to return nullable Layer type. (#673)

  • Update map events data models. (#712)

    • add optional sourceId and tileId in the MapLoadingErrorEventData and OnMapLoadErrorListener.
    • make response in ResourceEventData optional.
    • make etag, modified, expires inside resource request's Response optional.
    • add DataSourceType , RequestPriority , RequestType ,ResponseErrorType , ResponseSourceType enum for resource-request event which conform to java docs from gl-native.
  • Refactor MapEvents listeners, so that each listener will include one event data property. (#718)
    This unblocks us to add properties to the event data incrementally without breaking our public API.

    List of affected listeners:

    OnCameraChangeListener
    OnMapIdleListener
    OnMapLoadedListener
    OnMapLoadErrorListener
    OnRenderFrameFinishedListener
    OnRenderFrameStartedListener
    OnSourceAddedListener
    OnSourceDataLoadedListener
    OnSourceRemovedListener
    OnStyleDataLoadedListener
    OnStyleImageMissingListener
    OnStyleImageUnusedListener
    OnStyleLoadedListener
    Package name for Map event's data models is now com.mapbox.maps.extension.observable inside the sdk-base module, so it can be reused across different plugins.

    Type of TileID's z/x/y properties is changed from Double to Long.

  • Abstract classes CustomLayerHost, ElevationData, MapClient, Observer, OfflineRegionObserver, HttpServiceInterceptorInterface, HttpServiceInterface, LogWriterBackend, OfflineSwitchObserver, ReachabilityInterface, TileStoreObserver have 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_DISPLAY as 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 MapView on 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-opacity property is used. (#697)
  • Improve rendering performance by avoiding unnecessary re-layout for cached tiles. (#697)
  • Fix onResponse callback for HttpInterceptor never being called. (#697)

Dependencies

  • Bump gl-native to v10.0.0, common to v20.0.0. (#697)

android-v10.0.0-beta.19.1

23 Sep 15:38
b5564be
Compare
Choose a tag to compare
Pre-release

10.0.0-beta.19.1 - Sep 23, 2021

  • This is a patch to v10.0.0-beta.19

Bug fixes 🐞

  • Fix std::exception happening rarely when MapboxMap#setCamera() is called inside animation plugin. (#652)

android-v10.0.0-rc.9

22 Sep 16:40
199e358
Compare
Choose a tag to compare
android-v10.0.0-rc.9 Pre-release
Pre-release

10.0.0-rc.9 September 22, 2021

The Mapbox Maps SDK for Android has moved to release candidate status and is now ready for production use.

Features ✨ and improvements 🏁

  • Fix documentation for OnMapIdleListener and CameraChangeListeners. (#645)
  • Add support for SymbolZOrder property in PointAnnotationManager. (#638)
  • Add support for PromoteId to be used with Feature State API. (#636)
  • Expose optimizeForTerrain flag that could be applied to the MapView in xml. (#654)
  • Enable instant transitions for data driven symbol layer properties. (#646)

Bug fixes 🐞

  • OnStyleLoaded / OnMapLoaded callbacks 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#getStyle returning null after adding a new source when style was loaded before. (#643)
  • Allow setting null explicitly to annotation nullable properties. (#650)
  • Fix std::exception happing rarely when MapboxMap#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-gradient property is set at runtime. (#646)
  • Don't draw SDF images in text-field and 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)

android-v10.0.0-rc.8

08 Sep 07:41
c5c0ba5
Compare
Choose a tag to compare
android-v10.0.0-rc.8 Pre-release
Pre-release

10.0.0-rc.8 September 8, 2021

The Mapbox Maps SDK for Android has moved to release candidate status and is now ready for production use.

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)

android-v10.0.0-rc.7

25 Aug 11:28
1adb292
Compare
Choose a tag to compare
android-v10.0.0-rc.7 Pre-release
Pre-release

10.0.0-rc.7 August 25, 2021

The Mapbox Maps SDK for Android has moved to release candidate status and is now ready for production use.

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)

android-v10.0.0-rc.6

11 Aug 12:04
bcc0908
Compare
Choose a tag to compare
android-v10.0.0-rc.6 Pre-release
Pre-release

10.0.0-rc.6 August 11, 2021

The Mapbox Maps SDK for Android has moved to release candidate status and is now ready for production use.

Breaking changes ⚠️

  • Update extension function signatures making them easier to use from Java. (#539)
  • Rename mapView#overlay() to mapView#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 AnnotationManager before loading style. (#549)
  • Fix error messages returned by Style#removeStyleSource method. (#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)

android-v10.0.0-rc.5

28 Jul 14:49
6525925
Compare
Choose a tag to compare
android-v10.0.0-rc.5 Pre-release
Pre-release

10.0.0-rc.5 July 28, 2021

The Mapbox Maps SDK for Android has moved to release candidate status and is now ready for production use.

Breaking changes ⚠️

  • Improve camera API consumption from java programming language by adding CameraAnimationsUtils and getCamera JvmName annotations. (#495)
  • Rename AttributionView#setOnClickListener to setViewOnClickListener to 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 MapView startup time if plugins are enabled. (#519)

Features ✨ and improvements 🏁

  • Add showLogo and showAttributes config 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/onLowMemory methods 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)

android-v10.0.0-rc.4

14 Jul 07:00
5c8188b
Compare
Choose a tag to compare
android-v10.0.0-rc.4 Pre-release
Pre-release

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)

android-v10.0.0-rc.3

30 Jun 14:17
c4eb628
Compare
Choose a tag to compare
android-v10.0.0-rc.3 Pre-release
Pre-release

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)

API change:

// async 
fun queryMapForFeatures(screenCoordinate: ScreenCoordinate, callback: QueryAnnotationCallback<T>)

               ||
               \/
// sync
fun queryMapForFeatures(screenCoordinate: ScreenCoordinate): T?

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. (#442)

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. (#442)
  • Fixed an issue that the LayerPosition is not persisted across the style change, when using persistent layer based annotation plugin and location component plugin. (#442)
  • Disable MapboxTelemetryInitProvider if the telemetry is disabled via app's manifest reducing startup time. (#457)

Dependencies

  • Bump gl-native to v10.0.0-rc.3, common to v14.2.0. (#442)
  • Bump telemetry to 8.1.0. (#457)