SDK Android Library Change Log
[4.5.8] - 2026-04-10
Added
RoutePaddingtype for camera fitting padding withdp(context, ...)anduniformDp()factoriesfitPaddingparameter onaddRoute()andanimateRoute()for custom camera framing@JvmOverloadsonaddRoute/animateRoutefor Java binary compatibility
Fixed
ConfigurationResponse.initialZoomis nowDouble?(wasInt?) for decimal zoom supportLazarilloMapConfig.zoomchanged fromInttoDoublefor fractional zoom levels- Deduplicated floor-filter bounds logic in
addRoute/fitCameraToFloorSteps - Extracted
selectSpeedandappendTransitionStepMoveshelpers 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/maxZoomoverrides 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 customizablecolorStops),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
tagsandimagesfields onSdkPlacemodel
[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
RouteAnimationControllerclass that decouples route animation logic fromLazarilloMapinto a standalone, testable controller with a Handler-based tick loopRouteAnimationHostcallback interface for map operations during route animation (marker updates, floor changes, rotation, camera framing)AnimationSegmentsealed class hierarchy (Move,Rotate,FloorTransition,StepBoundary) for pre-computed animation plansanimationDeltaMsparameter toanimateRoute()for configurable tick intervalsetupGradientColors(aheadColor, behindColor)method onRoutePainterStyledfor 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), removingBREAKPOINT_SPLITandTHROTTLED_SPLITfor 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 RoutePainterStylednow maintains separate GeoJSON sources for the current section split, static behind sections, and static ahead sections- Forward-search hint (
lastBreakpointHint) added toRoutePainterStyledfor faster breakpoint lookups during animation
Removed
BREAKPOINT_SPLITanimation variant (replaced byGRADIENT_PROGRESS)THROTTLED_SPLITanimation variant (replaced byGRADIENT_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_popupandicon_prefixproperties onSdkStepRoutefor 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 onLazarilloMapfor 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) onSdkStepRoute
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
OutOfMemoryErroron some devices with constrained storage
[4.4.0] - 2026-03-20
Added
- Map element filtering via
setElementFilterto dynamically filter map features (POIs, lines, polygons) based on property criteria - Selected place label control via
hideSelectedPlaceLabelconfiguration option inLazarilloMapConfig - 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
minSdkVersionfrom 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
showCompassconfiguration 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
ConfigurationResponsewith 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
DisposeOnViewTreeLifecycleDestroyedfor ComposeView
Changed
- Add foojay toolchain resolver plugin
- Swap debug and androidTest manifests
[4.3.23] - 2026-03-11
Added
- Expanded
ConfigurationResponsewith 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?)
LazarilloMapConfigoptions:defaultMarkerIcondefaultRouteAnimationIcon
- 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
addMarkerandaddAnnotationWithnow honors configured/runtime default marker icon. updateRouteStep(...)now reuses step navigation behavior and updates marker/floor context consistently.RoutePainterStyled.updateLinesStyle(...)now resolves section selection fromroutingStepIndexcorrectly 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
internalvisibility modifier - Configure Dokka to exclude
internalmembers 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 bydocs-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
TrackingConfigclass for fine-grained control - Integration with
LazarilloMapConfigfor 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
followUserLocationbehavior 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
LocationComponentoperations - Fixed
LocationComponentNotInitializedExceptioncrashes - 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