Skip to Content
Changelog

SDK Android Library Change Log

[4.5.8] - 2026-04-10

Added

  • RoutePadding type for camera fitting padding with dp(context, ...) and uniformDp() factories
  • fitPadding parameter on addRoute() and animateRoute() for custom camera framing
  • @JvmOverloads on addRoute / animateRoute for Java binary compatibility

Fixed

  • ConfigurationResponse.initialZoom is now Double? (was Int?) for decimal zoom support
  • LazarilloMapConfig.zoom changed from Int to Double for fractional zoom levels
  • Deduplicated floor-filter bounds logic in addRoute/fitCameraToFloorSteps
  • Extracted selectSpeed and appendTransitionStepMoves helpers in animation controller

Changed

  • MapLibre 13.0.2 (Vulkan rotation fix, tile compression)
  • SonarQube plugin 7.2.3.7755

[4.5.7] - 2026-04-08

Added

  • Polyline-based camera bounds with optimal bearing for route framing

[4.5.6] - 2026-04-08

Added

  • Pause/resume route animation controls
  • minZoom/maxZoom overrides in element filter API

Fixed

  • Floor assignment for non-elevator floor transitions (stairs/ramps)

[4.5.5] - 2026-04-07

Added

  • Shape overlay API: polygons, circles, clusters, polylines, and heatmaps (model only)
  • LzPolygonModel, LzCircleModel, LzHeatmapModel (with customizable colorStops), LzClusterModel, LzPolylineModel
  • Public API on LazarilloMap: addPolygon(), removePolygon(), removeAllPolygons(), addCircleLayer(), removeCircleLayer(), addHeatmap(), removeHeatmap(), addCluster(), removeCluster(), addPolyline(), removePolyline()
  • Geometry Playground and Remote Configuration sections in demo app
  • Unit tests (26) and E2E visual integration tests for shape overlays

Known Issues

  • addHeatmap() is a no-op on MapLibre Android 13.x (Vulkan SIGSEGV crash with HeatmapLayer)

[4.5.4] - 2026-04-02

Fixed

  • Floor transition event timing in route animations
  • Animation marker visibility on floor changes

[4.5.3] - 2026-04-01

Added

  • tags and images fields on SdkPlace model

[4.5.2] - 2026-04-01

Fixed

  • Route gradient color resetting to “ahead” color on floor changes, losing the “behind” (traveled) portion

[4.5.1] - 2026-04-01

Fixed

  • Step-by-step navigation marker not moving when using Previous/Next buttons
  • Animation marker invisible after step changes due to missing opacity initialization
  • Arrival marker not reaching the visual end of the route line
  • Gradient progress not updating during manual step navigation
  • Floor-based marker visibility using wrong floor ID for arrival state

[4.5.0] - 2026-04-01

Added

  • RouteAnimationController class that decouples route animation logic from LazarilloMap into a standalone, testable controller with a Handler-based tick loop
  • RouteAnimationHost callback interface for map operations during route animation (marker updates, floor changes, rotation, camera framing)
  • AnimationSegment sealed class hierarchy (Move, Rotate, FloorTransition, StepBoundary) for pre-computed animation plans
  • animationDeltaMs parameter to animateRoute() for configurable tick interval
  • setupGradientColors(aheadColor, behindColor) method on RoutePainterStyled for configurable gradient animation colors
  • Layer override controls in the element filter UI (demo app)
  • Layer-specific filtering support for finer-grained map element visibility control
  • Comprehensive unit tests for RouteAnimationController (22 tests) covering plan building, frame delivery, rotation, floor transitions, stop/restart, and step callbacks
  • E2E test infrastructure for route animation with configurable test routes (Parque Arauco venue)

Changed

  • Route animation consolidated to gradient-only variant (GRADIENT_PROGRESS), removing BREAKPOINT_SPLIT and THROTTLED_SPLIT for simpler, flicker-free rendering
  • Route animation now uses time-based interpolation via SystemClock.uptimeMillis() for consistent speed regardless of tick delivery jitter
  • Route painting uses in-place GeoJsonSource.setGeoJson() updates instead of removing and recreating layers, reducing GC pressure and map flicker
  • RoutePainterStyled now maintains separate GeoJSON sources for the current section split, static behind sections, and static ahead sections
  • Forward-search hint (lastBreakpointHint) added to RoutePainterStyled for faster breakpoint lookups during animation

Removed

  • BREAKPOINT_SPLIT animation variant (replaced by GRADIENT_PROGRESS)
  • THROTTLED_SPLIT animation variant (replaced by GRADIENT_PROGRESS)
  • Animation variant selection RadioGroup from demo app layout

[4.4.7] - 2026-03-29

Added

  • Debug logging for route requests

Changed

  • Optimized route animation and camera fitting logic

[4.4.6] - 2026-03-28

Fixed

  • Refine camera bounds calculation for route framing to prevent edge clipping on certain route geometries

[4.4.5] - 2026-03-27

Added

  • show_popup and icon_prefix properties on SdkStepRoute for richer step metadata
  • Improved initial route camera framing that better fits the full route geometry on screen

Changed

  • Switch GitHub Pages deployment to branch-based workflow

[4.4.4] - 2026-03-25

Added

  • setCompassVisibility(visible: Boolean) method on LazarilloMap for runtime compass toggle

Fixed

  • Add ProGuard rules for Retrofit generic type signatures to prevent R8 stripping in release builds

[4.4.3] - 2026-03-24

Added

  • Route segment progress properties (progressRatio, distanceRemaining) on SdkStepRoute

Fixed

  • Correct path direction calculation that could reverse segment ordering on certain multi-leg routes

[4.4.2] - 2026-03-22

Added

  • Arrival state detection in route preview navigation, firing a distinct callback when the user reaches the final step
  • Refined route arrival behavior and label visibility management during active navigation

Changed

  • Upgrade Kotlin from 1.9.22 to 1.9.24 and update Compose BOM dependencies

[4.4.1] - 2026-03-21

Fixed

  • Remove explicit tile cache size configuration during map initialization that caused OutOfMemoryError on some devices with constrained storage

[4.4.0] - 2026-03-20

Added

  • Map element filtering via setElementFilter to dynamically filter map features (POIs, lines, polygons) based on property criteria
  • Selected place label control via hideSelectedPlaceLabel configuration option in LazarilloMapConfig
  • UI for element filtering and place label control in demo app
  • Option to toggle map rotation during route navigation
  • Parent place data caching with synchronous access via LzSdkManager
  • API context headers (mvx-product, mvx-parent, mvx-institution) injected automatically into all requests

Changed

  • Breaking: Bump minSdkVersion from 21 to 23 (Android 6.0 Marshmallow)
  • Upgrade MapLibre SDK from 11.12.1 to 13.0.1
  • Update User-Agent prefix from “Lazarillo” to “MVXSDK” for API identification

Fixed

  • Prevent cross-floor location projection during route rendering, avoiding incorrect geometry when user is on a different floor than the path segment
  • Respect showCompass configuration during map initialization

[4.3.30] - 2026-03-12

Added

  • Route preview fragment with step navigation controls in demo app
  • Unit tests for map configuration and multi-leg route sectioning
  • Unit tests for route step navigation

Changed

  • Route step navigation and marker icon customization improvements

[4.3.29] - 2026-03-11

Added

  • Product and sdkVersion query params to all API requests
  • Expanded ConfigurationResponse with camera and UI settings
  • Display current zoom level in demo app
  • E2E test for remote config map settings

Fixed

  • Correct camera idle listener and clean up debug logs
  • Upgrade Compose BOM to 2024.06.00 for Samsung hover crash
  • Disable Countly internal logging
  • Use DisposeOnViewTreeLifecycleDestroyed for ComposeView

Changed

  • Add foojay toolchain resolver plugin
  • Swap debug and androidTest manifests

[4.3.23] - 2026-03-11

Added

  • Expanded ConfigurationResponse with comprehensive SDK settings

[4.3.22] - 2026-03-10

Added

  • Floor and building ID support to routing

[4.3.21] - 2026-03-10

Added

  • Map padding and raw bitmap support for annotations
  • Place configuration retrieval with caching

Fixed

  • Filter floors by configuration and prevent cross-floor selection

[4.3.15] - 2026-03-08

Fixed

  • Sync label visibility and add missing text style properties

[4.3.14] - 2026-02-20

  • Version bump only

[4.3.13] - 2026-02-20

Added

  • iOS-parity marker customization options

[4.3.12] - 2026-02-20

Added

  • Route step preview controls in LazarilloMap:
    • goToRouteStep(stepIndex: Int): Result<Int>
    • goToNextRouteStep(): Result<Int>
    • goToPreviousRouteStep(): Result<Int>
    • getCurrentRouteStepIndex(): Int?
  • Runtime icon override APIs:
    • setDefaultMarkerIcon(iconId: String?)
    • setDefaultRouteAnimationIcon(iconId: String?)
  • LazarilloMapConfig options:
    • defaultMarkerIcon
    • defaultRouteAnimationIcon
  • New route preview demo flow (separate from debug screen) with manual step navigation controls.

Changed

  • Route animation marker no longer uses hardcoded icon id; it now resolves configured/runtime defaults.
  • Marker fallback resolution in addMarker and addAnnotationWith now honors configured/runtime default marker icon.
  • updateRouteStep(...) now reuses step navigation behavior and updates marker/floor context consistently.
  • RoutePainterStyled.updateLinesStyle(...) now resolves section selection from routingStepIndex correctly across multi-leg routes.

[4.3.11] - 2026-02-18

Added

  • Comprehensive KDoc documentation for all public API classes
  • Nextra-based documentation site with auto-generated API reference
  • Dokka GFM pipeline for API doc generation
  • New unit tests for SDK cache, map language layers, markers/floors, and visual filters
  • Visual filters feature in demo app

Changed

  • Mark 30 internal implementation classes with internal visibility modifier
  • Configure Dokka to exclude internal members from generated documentation
  • Reorganize API doc categories: merge Markers into Map, route styles into Routing, type aliases into Models
  • Update GitHub Pages workflow from MkDocs to Nextra + Dokka GFM

Removed

  • Legacy docs/ directory (replaced by docs-site/)
  • MkDocs configuration and dependencies

[4.3.10]

Added

  • Accessibility configuration from JSON

[4.3.0]

Added

  • Advanced location tracking configuration
    • Automatic tracking reactivation after zoom changes
    • Configurable reactivation delay and attempt limits
    • Preservation of original tracking parameters
    • Debug logging for tracking behavior
  • New TrackingConfig class for fine-grained control
  • Integration with LazarilloMapConfig for seamless configuration
  • JSON support for dynamic tracking configuration
  • Comprehensive documentation for tracking features

Fixed

  • Location tracking deactivation on zoom changes
  • Improved user experience for navigation apps
  • Better handling of tracking state management

Changed

  • Enhanced followUserLocation behavior with configurable options
  • Improved camera idle listener for better zoom change detection
  • Updated app example with tracking configuration

[4.2.35]

  • Improved user location tracking and marker visibility
    • Fixed issue where user location marker required double-tap to activate
    • Added callback-based activation for toggleLocationComponent() to prevent timing issues
    • Separated location activation from marker visibility updates
    • Added updateUserMarkerVisibility() method for granular control
    • Enhanced error handling for LocationComponent operations
    • Fixed LocationComponentNotInitializedException crashes
    • Improved internalShowUserPuck() with proper exception handling
    • Added comprehensive logging for debugging location issues
    • Updated followUserLocation() to use intelligent callback system instead of fixed delays
    • Added configureLocationTracking() method for reusable location configuration
    • Enhanced isLocationComponentReady() with safe exception handling
    • Fixed marker visibility updates when changing floors in indoor locations
    • Added updateUserLocationMarkerVisibility() public method for external control

[4.2.34]

  • Improves location tracking and user marker visibility

[4.2.32]

  • Fixing follow user

[4.2.31]

  • Cleans up and enhances location tracking
  • Reinitializes config on key/place change
  • Fixing update value of apiKey on demo
  • Updates SDK configuration and dependencies
  • Configures Detekt static analysis tool
  • Applies detekt autocorrect
  • Removes redundant Kotlin JVM plugin
  • Updates dependencies and SDK versions
  • Updates app dependencies and migrates to ViewBinding
  • Removing forced dependencies

[4.2.30]

  • Updating gradle files
  • Fixing load of logo
  • WIP version, need use variables

[4.1.0]

  • Add new route animation for large steps.

[4.0.29]

  • Fix for Android 14 parsing Location objects

[4.0.28]

  • Creating map with default floor of place

[4.0.27]

  • Hotfix to compile correctly last version with getSubPlaces()

[4.0.26]

  • Fix for decoding LzLocation in Android 14

[4.0.25]

  • Change names for code consistency

[4.0.19]

  • Accept rotating time argument on route animation.

[4.0.17]

  • No changes, only new version for jitpack

[4.0.16]

  • Improving loading time for map creation on Android.

[4.0.15]

  • Fix route color after changing floor.

[4.0.14]

  • Fix duplicate frame render when changing steps.

[4.0.13]

  • Markers shouldn’t use fixed size for icons

[4.0.12]

  • Change rotation time to 0.3s.

[4.0.11]

  • Adding accessible image for marker in cencosud

[4.0.10]

  • maxZoom, minZoom, showCompass, limitToRadius options for map.

[4.0.6]

  • Color for places on map without tap from user.

[4.0.4]

  • Tap places on map only when listener is added.

[4.0.3]

  • Tap places on map.

[4.0.2]

  • Fix for showing current route polyline in different floors

[4.0.1]

  • Accept id’s from Cencosud to request routes, reducing 2 request to only 1
  • Rotate and center map on first instruction when route has been loaded
  • Fix for NullPointerException regarding RoutingStatusRepository

[3.2.9]

  • Fix for polylines in different levels

[3.2.8]

  • Fix compatibility with coil and android 33

[3.2.7]

  • Update backward compatibility

[3.2.6]

  • Update default styles of route’s path line

[3.2.5]

  • Update default styles of route’s path line

[3.2.4]

  • Support svg icons
  • Fix png icons being shown in black and white

[3.2.3]

  • Simplify icons

[3.2.2]

  • Fix crashing on some routes

[3.2.1]

  • fix bearing icon always visible
  • fix location not updating on devices with nos compass sensors

[3.2.0]

Added

  • New place marker management system
    • Custom place markers with logos or text
    • Automatic floor-based visibility
    • Improved marker creation and management APIs
  • Enhanced location component handling
    • Better error handling and recovery
    • Improved indoor/outdoor transitions
    • Automatic floor-based visibility for user marker
  • Comprehensive documentation updates
    • New troubleshooting guide
    • Extended API documentation
    • Updated examples with new features

Fixed

  • Location marker visibility issues in indoor environments
  • Place marker creation and management edge cases
  • Floor change handling for markers

Changed

  • Improved marker creation performance
  • Enhanced error reporting and logging
  • Updated documentation structure

[3.1.2]

  • Fix GPS location not returning

[3.1.1]

  • Fix route line not painting the progress
  • Fix route as JSON to be the same as backend

[3.1.0]

  • Improve location following
  • Expose only one source of truth for location
  • Fix locations accuracy parameters
  • Fix locations with InsideBuilding.UNKNOWN
  • Move others filters outside LocationBeaconProducer

[3.0.0]

  • Fix location not working when there is no motion detection

[2.1.1]

  • new locationResponse
  • hash for improve beacon location

[2.1.0]

  • Step motion will be optional to use
  • Avoid incorrect floor change
  • Fix location not being updated

[2.0.0]

  • Added motion detection to increase location accuracy
  • New way to initialize the plugin
  • Breaking change: For doing the motion detection you will need to add this permission to the app: <uses-permission android:name="android.permission.ACTIVITY_RECOGNITION"/>

[1.2.2]

  • Add property with clean html instruction
Last updated on