[4.8.1] 2024-05-24


  • Fixed issue with changing icons on Selection and Highlight Display Rules, when not using a URL

[4.8.0] 2024-05-22


  • Support for Multi-stop navigation

    • MPDirectionsService.query(from: MPPoint, to: MPPoint, stops: List<MPPoint>?, optimize: Boolean) For getting a route between multiple stops, optimized or not.

      • MPDirectionsRenderer.defaultStopIcon Default icon shown for stops. Can be overwritten

      • MPDirectionsRenderer.setRoute(route: MPRoute, icons: HashMap<Integer,MPRouteStopIconProvider>?) for overwriting stop icons on specific stops

      • MPRouteStopIconProvider interface, for custom implementations of stop icons

      • MPRouteStopIconConfig.Builder Icon config, used for a convenient customisation of default stop icon

        • setColor Sets the inner color of the pin

        • setNumbered Wether the pin should have a number indicating the order of the stop

        • setLabel Sets a label underneath the pin, describing the stop


  • Issue when deserialising Graphic Labels

[4.7.3] 2024-05-06


  • Fixed issue where the animated route line is not shown after the first leg on Mapbox

  • Fixed issue where not having a fullscreen map could result in weird map behavior on Mapbox

[4.7.2] 2024-05-03


  • Fixed the issue with the route not being completely cleared on Mapbox when calling mpDirectionsRenderer.clear()

[4.7.1] 2024-05-02


  • Fixed issue with route not clearing on Mapbox.

[4.7.0-hotfix.1] 2024-05-01

This is a hotfix for the com.mapspeople.mapsindoors:mapbox package only.


  • Fixed rendering order for POIs, Walls, Extrusions and Graphic Labels

[4.7.0] 2024-04-30


  • Added Graphic Label support for SDKs running on Mapbox

    • See a guide on how to use these new labels on Android here

  • Added ability to disable camera movement when using MPDirectionsRenderer

    • Set the MPCameraViewFitMode to NONE with mpDirectionsRenderer.setCameraViewFitMode to disable camera movement when rendering the route

[4.6.0] 2024-04-18


  • Mapbox 11 support

    • With Mapbox 11 we also introduce 3D models on the Android apps

    • Mapbox 11 is optional for MapsIndoors v4, to opt-in you have to use the mapbox-v11 package: implementation "com.mapspeople.mapsindoors:mapbox-v11:4.6.0"

      • We recommend to start with Mapbox 11.3.0

      • The default package will continue to use Mapbox 10

  • Added support for hiding/showing features to Mapbox 11

    • This includes:

      • 2D models

      • 2D walls

      • 3D models

      • 3D walls

      • 3D Extrusions

      • 3D Extruded Buildings

    • Hiding features can be done programmatically with mapControl.setHiddenFeatures(List<MPFeature>)

[4.5.0] 2024-04-15


  • Added ability to disable automatic building and floor selection select

    • This disables all automatic behavior, giving full control to the developer for when the building selection or floor is changed.

    • It can be disabled in the MPMapConfig when setting up MapControl, or during runtime directly on MapControl with setBuildingSelectionMode(MPSelectionMode) and setFloorSelectionMode(MPSelectionMode)


  • Laxed nullability requirements for MapControl's selectVenue(MPVenue, boolean) and selectBuilding(MPBuilding, boolean) to now allow for nulls which will deselect instead


  • Fixed issue where changing icon on a Display Rule would not have any effect

  • Fixed issue where changing icon size on a Display Rule would not have any effect

  • Fixed issue where icons would be improperly scaled, resulting in the icons becoming blurry

  • Fixed a number of minor crashes

[4.4.1] 2024-03-20


  • Fixed crash when live data was enabled

  • Fixed a dependency issue on the Mapbox version

[4.4.0] 2024-03-07


  • Added optional venue loading, use MapsIndoors.load(context, apikey, venueIds, listener) to load a specific set of venues

    • Venues can be added and removed from load at any time by using MapsIndoors.addVenueToSync(venueId) and MapsIndoors.removeVenueToSync(venueId)

    • Track the status of venues by adding a listener with MapsIndoors.addOnVenueStatusChangedListener(MPVenueStatusListener)


  • Fixed issue where google map markers would show up briefly before being replaced by actual icons

  • Fixed issue where 2d models would become unclickable on Google Maps

  • Fixed issue where having very large images or text would result in an OpenGL crash on Google Maps

  • Fixed issue where 2d models would have inaccurate hitbox on Mapbox

[4.3.4] 2024-02-26


  • Issue where a crash could happen when rendering an icon

  • Issue where a route could be requested incorrectly on a oneway path, causing no route to be received

[4.3.3] 2024-02-23


  • Fixed issue where language initialization would fail and crash

  • Fixed issue where if some data was parsed wrong would result in a crash

[4.3.2] 2024-02-22


  • Improved initial rendering of polygons on Google Maps


  • Crash that could occur loading data from storage

  • Crash that could occur when selecting a location on Mapbox

  • Fixed line breaking on Mapbox to be more consistent with other platforms

[4.3.1] 2024-02-15


  • Map click selection now only happens when features are in the visible range


  • getLocationSettings on MPLocation, MPPOItype and MPSolutionConfig

  • Support for non-selectable locations


  • Issue where setting null value on some displayrule values would cause a crash

  • Labels potentially being too close to icons on Google Maps

  • Unlocked zoom being capped at zoom level 22 on Mapbox

  • Geometries missing when locations are clustered

  • Extrusions not being clickable

  • Text font and letterspacing being inconsistent with other platforms

[4.3.0] 2024-01-24


  • Changed the default rendering of selected Locations.


  • Added setHighlight and clearHighlight to MapControl which allows you to highlight a list of locations

  • Added setNewSelection to MPSolutionConfig this allows you to change back to the selection rendering of the previous SDK versions. Default is true

  • Added new values to MPDisplayRule

    • iconScale

    • iconPlacement

    • labelType

    • polygonLightnessFactor

    • wallLightnessFactor

    • extrusionLightnessFactor

    • labelStyleTextSize

    • labelStyleTextColor

    • labelStyleTextOpacity

    • labelStyleHaloOpacity

    • labelStyleHaloWidth

    • labelStyleHaloBlur

    • labelStyleBearing

    • badgeVisible

    • badgeZoomFrom

    • badgeZoomTo

    • badgeRadius

    • badgeStrokeWidth

    • badgeStrokeColor

    • badgeFillColor

    • badgePosition

  • Added addExcludeWayType , clearExcludeWayType to MPDirectionsService to allow the user to exclude specific MPHighway 's when querying for a route.

  • Added two new MPSolutionDisplayRule 's SELECTION and HIGHLIGHT that allows you to modify the look of highlighted and selected Locations.

  • Support for Flat labels (on Mapbox)


  • Fixed an issue where user could end up selecting floors with map clicks

  • Fixed an issue with avoidWayType not respecting all MPHighway


  • clearWayType use clearAvoidWayType instead

  • setMapLabelFont(typeface, color, showHalo) use setMapLabelFont(typeface) instead. For changing Colors etc. use the DisplayRule instead.

  • setMapLabelTextSize use MPDisplayRule.setLabelStyleTextSize instead

[4.2.12] 2024-01-16


  • Fixed an edge case where Directions outside Venues would not be possible on Google Maps

[4.2.11] 2024-01-11


  • Fixed issue where MapControl would crash with google maps, when calling onDestroy

[4.2.10] 2024-01-08


  • Updated loading logic for Mapbox rendering, which will in some cases give a significant increase in rendering responsiveness.


  • Fixed issue where marker icons could crash if the icon disappeared before rendering

  • Fixed NPE when calling MapControl.setMapPadding

  • Fixed possible NPE when getting tilesUrl from a MPVenue

[4.2.9] 2023-12-21


  • Fixed issue where removing/adding a MPCameraEventListener during the callback from a MPCameraEventListener could result in a crash.

  • Fixed issue where 2D models could cause a crash.

[4.2.8] 2023-12-15


  • Fixed issue where initializing MapControl could result in the initial tileset not being visible.

  • Fixed issue where reloading MapControl would result in the OnMapClickListener not working properly.

[4.2.7] 2023-12-14


  • Fixed issue where locations would use the wrong zoom level when using Mapbox

  • Fixed issue where clicking on a custom Marker on Google Maps could result in a crash

  • Fixed issue where setting a MPCameraEventListener could result in a crash

  • Fixed issue where Google Maps would spam the log with messages about missing tiles.

[4.2.6] 2023-11-16


  • Fixed issue where polygon display rules would not be applied on Google Maps.

  • Fixed issue where the render thread would exclusively draw to a single instance of MapControl.

  • Fixed issue where goTo would use wrong data from some entities, setting the floor index to NO_FLOOR_INDEX in those cases.

  • Fixed issue where cached data check could fail, when all data is available.

[4.2.5] 2023-10-20


  • Fixed a crash on google external directions

[4.2.4] 2023-10-17


  • The SDK now targets Android 14 (API level 34)


  • Fixed a crash that could occur when shutting down the SDK

[4.2.3] 2023-10-10


  • Fixed issue where the disk cache would be accessed after it was closed

  • Fixed issue where tapping on the map and moving it in quick succession could result in a crash

  • Fixed race condition where the DataSetCacheManager was sometimes initialized too late

  • Fixed issue where icons could be null when handed over to google maps

  • Fixed rare NPE when selecting a location

[4.2.2] 2023-09-22


  • Fixed issue where the disk cache would be accessed after it was closed

  • Fixed issue where tapping on the map and moving it in quick succession could result in a crash

  • Fixed race condition where the DataSetCacheManager was sometimes initialized too late

  • Fixed issue where icons could be null when handed over to google maps

  • Fixed rare NPE when selecting a location

[4.2.1] 2023-09-21


  • Fixed multiple rendering and cache related crashes

[4.2.0] 2023-09-20


  • Added functionality to respect the building outline display rule set in the CMS

  • Added functionality to show floor plans

  • Added functionality to remove route leg buttons from the map

    • Use MPDirectionsRenderer to call showRouteLegButtons(boolean)


  • 3D models are still experimental, and will not be included in this release


  • Fixed label text color and halo options not being respected when using mapbox

  • Fixed build issue where some classes had their methods transformed to be final

  • Fixed issue where a location's position sometimes was moved unintentionally

[4.1.11] 2023-08-24


  • Fixed issue where tapping on moving livedata would move the camera to the location's original position

  • Fixed issue where setting a position provider with existing position data would not show a puck until new position data became available

  • Fixed issue where setting a different language than the default language could cause the map to not load

  • Fixed issue where reloading the SDK would set a different language than the first load

  • Fixed issue where reloading the SDK rapidly multiple times would cause crashes

[4.1.10] 2023-08-02


  • Updated Display Rule validation to only throw when developer mode is enabled (it can be enabled by calling MPDebugLog.enableDeveloperMode(true))

    • Additionally, validation will now give more usable error messages


  • Fixed issue where setting departure time to the current time would fail route creation when using Google Maps in some cases

[4.1.9] 2023-07-24


  • External routes will now respect the language set in the SDK

  • The SDK now supports zoom levels beyond 22 where applicable


  • Fixed rare issue where SDK would attempt to update a dead marker resulting in a crash

[4.2.0-beta.1] 2023-06-28


  • Added support for 3D models

[4.1.8] 2023-06-28


  • Fixed issue where setting departure time on a route would cause the SDK to crash

  • Fixed issue where loading the SDK offline could cause a crash

  • Fixed issue where route line would be obscured by walls and extrusion when using Mapbox

[4.1.7] 2023-06-23


  • Fixed timing issues with display rules and applying UserRoles

  • Fixed issue where a rendered route would be obscured

[4.1.6] 2023-06-02


  • Fixed compilation issues, due to a build configuration

[4.1.5] 2023-06-01


  • Fixed crashes happening when loading new solutions while a load is ongoing

[4.1.4] 2023-05-25


  • Updated Mapbox version to 10.13.0


  • Fixed issue where MapsIndoors could crash when other markers were present on the map

  • Reduced memory usage of 2D models

  • Fixed issue where changing solution on the same map would not work

[4.1.3] 2023-05-16


  • Fixed occasional crashes when destroying MapsIndoors

  • Fixed occasional crash when selecting location after load

[4.1.2] 2023-05-11


  • Fixed map padding not being applied to camera movement when using Mapbox

  • Fixed delay when selecting a location until its info window appeared on Mapbox

  • Fixed selectLocation not moving the camera when the location was outside the viewport

  • Fixed crash that could occur when Mapbox can not generate a route

  • Fixed issue where large areas were not being shown on Google Maps

  • Fixed issue where SDK would crash if solution data is unavailable remotely, but the local cache data stored

  • Fixed issue where location display rules would receive a unidentifiable name/id

[4.1.1] 2023-03-09


  • Made MPMapBehavior JSON serializable, and its getters public

  • Updated MapsPeople watermark


  • Fixed rare case where the SDK would load successfully but still crash

  • Fixed being unable to get MPSolutionDisplayRules by name

  • Fixed issue where tiles would not update when switching floors

[4.1.0] 2023-02-21


  • Deprecated MPBuilding.getInitialZIndex() and added getInitialFloorIndex() to replace it

  • Deprecated MPBuilding.getFloorByZIndex() and added getFloorByIndex to replace it

  • Deprecated MPDataSetCache.setScope(Context, MPDataSetCacheScope) and added `setScope(MPDataSetCacheScope) to replace it

  • Deprecated MPDataSetCacheItem.getCacheSize(Context) and added getCacheSize() to replace it

  • Deprecated MPDirectionsService(Context) CTOR and added MPDirectionsService() to replace it

  • Deprecated MPFloor.getZIndex() and added getFloorIndex to replace it

  • Deprecated MPFloor.setZIndex() and added setFloorIndex to replace it

  • Deprecated MPRouteCoordinate.getZIndex() and added getFloorIndex to replace it

  • Deprecated MPRouteCoordinate.setZIndex() and added setFloorIndex to replace it

  • Deprecated MPSolutionInfo as it duplicates information from MPSolution


  • Fixed ANY_DOMAIN livedata domain not having any effect

  • Fixed rare issue where collision between markers could cause a crash

  • Fixed issue where setting some listeners could cause a crash

  • Fixed reference documentation around MPVenue.getName(), see the migration guide for more information

  • Various fixes and improvements

[4.0.5] 2023-01-26


  • Added Extension functions for converters, these are usable from kotlin projects


  • Fixed issue where SDK would try to use destroyed context to access files directory

  • Fixed MPSelectionBehavior and MPFilterBehavior super class MPMapBehavior not being public

  • Fixed a number of memory leaks

[4.0.4] 2023-01-17


  • Fixed issue with the livedata SDK where subscribing to some domains would subscribe to multiple domains instead

  • Fixed issue where MPApiKeyValidator would send multiple errors instead of just one

  • Fixed issue where the SDK would update UI elements on non-main thread

  • Fixed memory leaks where the map view was leaked

[4.0.3] 2023-01-05


  • Added factory methods fromValue(int) and fromStringValue(String) to MPCollisionHandling

  • Added removeOnFloorUpdateListener(OnFloorUpdateListener) to MapControl

  • Added isInside(MPLatLng) method to MPGeometry


  • Deprecated getCurrentStyle() and setCurrentStyle(String) in MPFloor


  • Fixed issue where main and solution type rules could not be fetched by name

  • Fixed issue where SDK would crash during startup

  • Fixed issue where giving MPPoints with no floorIndexes to MPDirectionsService would result in bugged routes

  • Fixed issue when generating MPPolygonGeometry from MPMultiPolygonGeometry

  • Fixed memory leak where the SDK would hold onto the maps FrameLayout

  • Fixed issues that could occur if the SDK is shut down during startup

[4.0.2] 2022-11-02[​]


  • Added Reverse Geocoding interface

    • It can be used to fetch mapsindoors data from a given geographical coordinate

  • Added ability to use a Context when building a MPMapConfig, instead of an Activity


  • Fixed 2D model rendering related issues

  • Fixed Live Data badges in some cases overlapping the icon or label

  • Fixed issue with Main Display Rule not being respected in some instances

  • Fixed race-condition crash that could occur on Google Maps

[4.0.1] 2022-10-18


  • Added getLocationsByExternalIds to MapsIndoors

    • This can be used to get a list of locations based on a corresponding list of external ids

  • Exposed layer names on Mapbox implementation, allowing custom layers to be inserted between MapsIndoors layers

    • The list of layers can be accessed from the MPLayers class


  • Fixed issue with display rule inheritance from the main display rule

  • Fixed memory issue that could occur when loading a large amount of 2D models

  • Various minor fixes

[4.0.0] 2022-09-29


  • Support for new map providers

    • Mapbox

      • MapsIndoors can now be packaged with the Mapbox v10 SDK

  • 2D Model support

    • The Android SDK is now capable of displaying 2D Models (also known as Ground Overlays)

  • goTo()

    • A new method for moving the camera to MapsIndoors locations, this new method goTo() can be used with any class that implements MPEntity, which includes but is not limited to MPLocation, MPFloor, and MPBuilding

  • Solution Config

    • The Android SDK now supports the Solution Config

    • This also introduces the new Main Display Rule, which is bundled into the solution config, along with collision handling, clustering and 3D (walls and extrusions) opacity


  • Maven package changes

    • With the move to supporting multiple map platforms, we had to move some stuff around in the package, the SDK can now be downloaded via these maven dependencies

      • 'com.mapspeople.mapsindoors:googlemaps:4.0.0'

      • 'com.mapspeople.mapsindoors:mapbox:4.0.0'

  • Naming convention

    • All public classes now has a MP prefix, with the exemption of MapControl, MapsIndoors and some listeners

    • New interfaces will use the MPI prefix

    • Some public classes will have a [INTERNAL] at the top of their javadoc, these classes are used for communication between the core SDK and map platform specific code. Refrain from using these classes unless you know what you are doing

  • Display Rules

    • Display rules have been reworked completely

    • It has been reduced to a single class MPDisplayRule

    • It is now reference based, thus any changes to the rule are instantaneous

    • MPDisplayRuleOptions has been added and is used to bulk edit display rules

    • Display rules can be reset with reset() this will return the display rule to the state it has in the CMS

  • Display search results

    • Has been renamed to setFilter(), and have been reworked completely

    • Now takes a MPFilterBehavior, which is used to dictate the behavior of the filter on the map

  • Selection

    • Selection, like filtering, has improved, it now uses a MPSelectionBehavior which is used to dictate the behavior of the selection on the map

  • Initialization (MapsIndoors and MapControl)

    • Now MapsIndoors is initialized with the load(appContext, APIKey, listener) method. This applies to both initial initialization, and when updating the context or API key

    • MapControl no longer has a public constructor and initializer method, it now uses a factory method create(MPMapConfig, onMapControlReady)

      • The onMapControlReady listener will wait for MapControl to finish initializing, this guarantees that MapControl cannot be aquired in a broken state

      • The MPMapConfig is a collection of settings that previously had to be set on MapControl at various stages of initialization to take effect. These are now bundled into a single package that take effect when MapControl finishes initializing

        • These settings can still be updated individually at runtime

  • Routing

    • MPRoutingProvider has been renamed to MPDirectionsService to align with other platforms

    • MPDirectionsRenderer has been simplified in use, after creation MPDirectionsRenderer(MapControl), setRoute(MPRoute) can be called and it will display the route on the map

  • Clustering and Collision handling has been moved from MPAppConfig to MPSolutionConfig, and have recieved proper typing, Collision handling is now defined by an enum MPCollisionHandling

    • Collision handling now has multiple states that allow for better control of how markers are shown on the map


  • The MPPositionProvider interface has been reduced to 3 methods thare are essential for interfacing a position provider with the SDK

  • A large amount of unused/unwanted/unusable classes have been removed from the SDK


  • Optimized memory management of icons

  • Display rules are now applied much more consistently

Last updated