# V3

### \[3.13.22] 2023-03-09[​](https://docs.mapsindoors.com/changelogs/android#31322-2023-03-09) <a href="#id-31322-2023-03-09" id="id-31322-2023-03-09"></a>

#### Changed[​](https://docs.mapsindoors.com/changelogs/android#changed-5) <a href="#changed-5" id="changed-5"></a>

* Updated MapsPeople watermark

### \[3.13.21] 2023-01-10[​](https://docs.mapsindoors.com/changelogs/android#31321-2023-01-10) <a href="#id-31321-2023-01-10" id="id-31321-2023-01-10"></a>

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-17) <a href="#fixed-17" id="fixed-17"></a>

* Fixed issue where destroying `MapControl` could result in a crash

### \[3.13.20] 2023-01-02[​](https://docs.mapsindoors.com/changelogs/android#31320-2023-01-02) <a href="#id-31320-2023-01-02" id="id-31320-2023-01-02"></a>

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-18) <a href="#fixed-18" id="fixed-18"></a>

* Fixed issue where tiles would not render when map is loaded

### \[3.13.19] 2022-07-20[​](https://docs.mapsindoors.com/changelogs/android#31319-2022-07-20) <a href="#id-31319-2022-07-20" id="id-31319-2022-07-20"></a>

#### Added[​](https://docs.mapsindoors.com/changelogs/android#added-6) <a href="#added-6" id="added-6"></a>

* Re-introduced old overlap strategy where the entire marker would be made invisible if it overlapped another.
  * Use `mapControl.setMarkerIndependentIconLabel(false)` to enable it.

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-19) <a href="#fixed-19" id="fixed-19"></a>

* Fixed issue where older devices would be unable to connect to MapsIndoors services
* Fixed issue where reload would cause markers to ignore location specific rules
* Fixed crash that could occur when destroying mapcontrol
* Fixed issue where rendering would seem to stop, only to resume a while later

### \[3.13.18] 2022-06-25[​](https://docs.mapsindoors.com/changelogs/android#31318-2022-06-25) <a href="#id-31318-2022-06-25" id="id-31318-2022-06-25"></a>

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-20) <a href="#fixed-20" id="fixed-20"></a>

* Fixed rare occurrence where the camera would move to the other side of the world during routing

### \[3.13.17] 2022-06-24[​](https://docs.mapsindoors.com/changelogs/android#31317-2022-06-24) <a href="#id-31317-2022-06-24" id="id-31317-2022-06-24"></a>

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-21) <a href="#fixed-21" id="fixed-21"></a>

* Fixed rare issue where routing to entry points might fail
* Fixed issue where icons would not update automatically

### \[3.13.16] 2022-06-23[​](https://docs.mapsindoors.com/changelogs/android#31316-2022-06-23) <a href="#id-31316-2022-06-23" id="id-31316-2022-06-23"></a>

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-22) <a href="#fixed-22" id="fixed-22"></a>

* Fixed sometimes deleted `PolygonDisplayRule` would leave behind a `Polygon` on the map that could not be removed

### \[3.13.15] 2022-06-14[​](https://docs.mapsindoors.com/changelogs/android#31315-2022-06-14) <a href="#id-31315-2022-06-14" id="id-31315-2022-06-14"></a>

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-23) <a href="#fixed-23" id="fixed-23"></a>

* `getDisplayRule(MPLocation)` on `MapControl` would return null, even when a display rule exists for the location

### \[3.13.14] 2022-06-10[​](https://docs.mapsindoors.com/changelogs/android#31314-2022-06-10) <a href="#id-31314-2022-06-10" id="id-31314-2022-06-10"></a>

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-24) <a href="#fixed-24" id="fixed-24"></a>

* Fixed issue with markers sometimes not appearing, on a fresh app install
* Fixed issue with overriding `PolygonDisplayRule` not being reflected on the map

### \[3.13.13] 2022-06-07[​](https://docs.mapsindoors.com/changelogs/android#31313-2022-06-07) <a href="#id-31313-2022-06-07" id="id-31313-2022-06-07"></a>

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-25) <a href="#fixed-25" id="fixed-25"></a>

* Fixed issue with contextual route rendering, where a crash would occur if no available marker icon was found.
* Fixed crash where `BitmapDescriptorFactory` would cause various memory related runtime exceptions under rare circumstances

### \[3.13.12] 2022-05-11[​](https://docs.mapsindoors.com/changelogs/android#31312-2022-05-11) <a href="#id-31312-2022-05-11" id="id-31312-2022-05-11"></a>

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-26) <a href="#fixed-26" id="fixed-26"></a>

* Issue with MapControl.onStart() being called before initialization
* Issue with rendering locations containing polygon display rules that was not an area
* A memory leak when calling MapControl.onDestroy()

### \[3.13.11] 2022-04-21[​](https://docs.mapsindoors.com/changelogs/android#31311-2022-04-21) <a href="#id-31311-2022-04-21" id="id-31311-2022-04-21"></a>

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-27) <a href="#fixed-27" id="fixed-27"></a>

* Issue with tint on shared drawables
* Stability fixes

### \[3.13.10] 2022-04-12[​](https://docs.mapsindoors.com/changelogs/android#31310-2022-04-12) <a href="#id-31310-2022-04-12" id="id-31310-2022-04-12"></a>

#### Added[​](https://docs.mapsindoors.com/changelogs/android#added-7) <a href="#added-7" id="added-7"></a>

* Interface for querying distance matrix services using `getDistanceMatrix()` on `MPRoutingProvider`

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-28) <a href="#fixed-28" id="fixed-28"></a>

* Various bugs and crashes

### \[3.13.9] 2022-04-01[​](https://docs.mapsindoors.com/changelogs/android#3139-2022-04-01) <a href="#id-3139-2022-04-01" id="id-3139-2022-04-01"></a>

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-29) <a href="#fixed-29" id="fixed-29"></a>

* Crash where the SDK would potentially execute on the wrong thread when modifying display rules

### \[3.13.8] 2022-03-31[​](https://docs.mapsindoors.com/changelogs/android#3138-2022-03-31) <a href="#id-3138-2022-03-31" id="id-3138-2022-03-31"></a>

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-30) <a href="#fixed-30" id="fixed-30"></a>

* Crash where large marker icons would exceed the device's OpenGL max texture size limit

### \[3.13.7] 2022-03-17[​](https://docs.mapsindoors.com/changelogs/android#3137-2022-03-17) <a href="#id-3137-2022-03-17" id="id-3137-2022-03-17"></a>

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-31) <a href="#fixed-31" id="fixed-31"></a>

* Fixed issue with category filter not being respected on `MPFilter`
* Minor security additions
* Fixed issue with `setTileSize()` not working

### \[3.13.6] 2022-03-08[​](https://docs.mapsindoors.com/changelogs/android#3136-2022-03-08) <a href="#id-3136-2022-03-08" id="id-3136-2022-03-08"></a>

#### Added[​](https://docs.mapsindoors.com/changelogs/android#added-8) <a href="#added-8" id="added-8"></a>

* Added `isInitialized()` to `MPDataSetCacheManager` to check whether it has been initialized

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-32) <a href="#fixed-32" id="fixed-32"></a>

* Toned down rendering frequency in some cases
* Introduced a number of stability fixes

### \[3.13.5] 2022-03-02[​](https://docs.mapsindoors.com/changelogs/android#3135-2022-03-02) <a href="#id-3135-2022-03-02" id="id-3135-2022-03-02"></a>

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-33) <a href="#fixed-33" id="fixed-33"></a>

* Fixed SDK not syncing correctly after calling `MapsIndoors.synchronizeContent()` if App User Roles have been applied
* Fixed SDK routing not working with restricted Google API keys
* Fixed clusters sometimes showing incorrect number of clustered locations

### \[3.13.4] 2022-02-21[​](https://docs.mapsindoors.com/changelogs/android#3134-2022-02-21) <a href="#id-3134-2022-02-21" id="id-3134-2022-02-21"></a>

#### Added[​](https://docs.mapsindoors.com/changelogs/android#added-9) <a href="#added-9" id="added-9"></a>

* Added `Venue.hasGraph()` which checks whether the venue has a valid routing graph configured

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-34) <a href="#fixed-34" id="fixed-34"></a>

* Fixed App User Roles not syncing correctly, leading to unexpected behavior

### \[3.13.3] 2022-02-16[​](https://docs.mapsindoors.com/changelogs/android#3133-2022-02-16) <a href="#id-3133-2022-02-16" id="id-3133-2022-02-16"></a>

#### Changed[​](https://docs.mapsindoors.com/changelogs/android#changed-6) <a href="#changed-6" id="changed-6"></a>

* Optimized inital rendering of new Markers
* User roles set on MapsIndoors are now implicitly applied to directions, unless explicitly set on MPRoutingProvider

#### Deprecated[​](https://docs.mapsindoors.com/changelogs/android#deprecated-2) <a href="#deprecated-2" id="deprecated-2"></a>

* Deprecated `MapControl.unbindFromMap()`

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-35) <a href="#fixed-35" id="fixed-35"></a>

* Fixed issue where `MapControl.init()`'s listener was invoked too soon

### \[3.13.2] 2022-02-10[​](https://docs.mapsindoors.com/changelogs/android#3132-2022-02-10) <a href="#id-3132-2022-02-10" id="id-3132-2022-02-10"></a>

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-36) <a href="#fixed-36" id="fixed-36"></a>

* Fixed an issue where markers may not show on the map on subsequent loading of the same API key
* Fixed an issue with `MapControl.setApiKey()` where the onLoadingReadyListener would never be invoked

### \[3.13.1] 2022-02-09[​](https://docs.mapsindoors.com/changelogs/android#3131-2022-02-09) <a href="#id-3131-2022-02-09" id="id-3131-2022-02-09"></a>

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-37) <a href="#fixed-37" id="fixed-37"></a>

* Fixed crash that occurs when calling `MapControl.onDestroy()` multiple times
* Fixed crash due to markers being removed before changes could be applied to them

### \[3.13.0] 2022-02-09[​](https://docs.mapsindoors.com/changelogs/android#3130-2022-02-09) <a href="#id-3130-2022-02-09" id="id-3130-2022-02-09"></a>

#### Changed[​](https://docs.mapsindoors.com/changelogs/android#changed-7) <a href="#changed-7" id="changed-7"></a>

* Tweaked how bitmaps are stored in the SDK to lower retained memory size
  * Reduced heap size by up to 90% depending on solution configuration
* Tweaked area rendering to improve rendering performance
* `MapsIndoors.setGoogleAPIKey()` can now be called before `MapsIndoors.Initialize()`
* Improved SDK stability when receiving unknown HTTP responses

#### Deprecated[​](https://docs.mapsindoors.com/changelogs/android#deprecated-3) <a href="#deprecated-3" id="deprecated-3"></a>

* Deprecated `MPRoutingProvider.queryMultipleDestinations()`
* Deprecated `RouteStep.addSteps()`
  * Use `RouteStep.setSteps()` instead

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-38) <a href="#fixed-38" id="fixed-38"></a>

* Fixed memory leak
* Fixed issue that caused SDK to crash when launched in offline mode
* Fixed issue where receiving a HTTP 500 response crashed the SDK
* Fixed crash that could occur when selecting specific locations
* Fixed issue that caused the SDK to not show proper tiles in some cases
* Various fixes and improvements

### \[3.12.6] 2022-01-19[​](https://docs.mapsindoors.com/changelogs/android#3126-2022-01-19) <a href="#id-3126-2022-01-19" id="id-3126-2022-01-19"></a>

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-39) <a href="#fixed-39" id="fixed-39"></a>

* Fixed issue where map padding was not always applied when changed on runtime
* Fixed issue with a internal library conflicting with newer versions of firebase libraries
* Fixed issue with custom images on locations not being applied on load
* Fixed crash appearing when frequently reloading solutions

### \[3.12.5] 2022-01-07[​](https://docs.mapsindoors.com/changelogs/android#3125-2022-01-07) <a href="#id-3125-2022-01-07" id="id-3125-2022-01-07"></a>

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-40) <a href="#fixed-40" id="fixed-40"></a>

* Fixed behavior where no tiles are shown
* Fixed issue with external routes choosing the wrong entry point
* Various crashes

### \[3.12.4] 2021-12-21[​](https://docs.mapsindoors.com/changelogs/android#3124-2021-12-21) <a href="#id-3124-2021-12-21" id="id-3124-2021-12-21"></a>

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-41) <a href="#fixed-41" id="fixed-41"></a>

* Fixed a potential crash when changing API keys rapidly
* Fixed tiles not being rendered
* Fixed caching issue with images

### \[3.12.3] 2021-12-15[​](https://docs.mapsindoors.com/changelogs/android#3123-2021-12-15) <a href="#id-3123-2021-12-15" id="id-3123-2021-12-15"></a>

#### Added[​](https://docs.mapsindoors.com/changelogs/android#added-10) <a href="#added-10" id="added-10"></a>

* Added `MPConstants`, which in this first iteration exposes a number of constants related to Z-index levels on the google map

#### Changed[​](https://docs.mapsindoors.com/changelogs/android#changed-8) <a href="#changed-8" id="changed-8"></a>

* Upped target SDK version to 31 (Android 12)
* Made changes to rendering such that the contents of the map are updated more often

#### Deprecated[​](https://docs.mapsindoors.com/changelogs/android#deprecated-4) <a href="#deprecated-4" id="deprecated-4"></a>

* Deprecated `MPDatasetCacheManager.getConcurrentTaskLimit()`
* Deprecated `MPDatasetCacheManager.setConcurrentTaskLimits()`

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-42) <a href="#fixed-42" id="fixed-42"></a>

* Fixed issues with linebreaks
* Fixed issue where the floor selector was unremoveable
* Fixed manifest issue that was blocking use of the SDK in Android 12 apps
* Fixed issue where the SDK continued to be 'ready' for a short period after setting user roles
* Fixed an issue where `MPQuery.setNear()` ignored the Z-index of the parameter
* Fixed an issue where initializing the SDK with an invalid API key would lock it
* Various minor fixes

### \[3.12.2] 2021-12-07[​](https://docs.mapsindoors.com/changelogs/android#3122-2021-12-07) <a href="#id-3122-2021-12-07" id="id-3122-2021-12-07"></a>

#### Added[​](https://docs.mapsindoors.com/changelogs/android#added-11) <a href="#added-11" id="added-11"></a>

* Added `getTranslatedName()` to POIType, which can get the name of a type in plaintext in the correct language
* Added `getLatLngBounds()` to Route

#### Deprecated[​](https://docs.mapsindoors.com/changelogs/android#deprecated-5) <a href="#deprecated-5" id="deprecated-5"></a>

* `Route.getWaypoint_order()`

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-43) <a href="#fixed-43" id="fixed-43"></a>

* Fixed crash from adding a listener to the LiveDataManager
* Fixed crash where icons did not have a valid resource
* Fixed FloorSelector sometimes not being visible
* Fixed bug that showed wrong directions when changing floors
* Fixed bug where searching for a specific location could include all available locations
* Fixed issue where cache was deleted from SDK before sync was initiated
* Fixed rare NPE that could occur when switching solutions
* Fixed Various other bugs and crashes

### \[3.12.1] 2021-11-24[​](https://docs.mapsindoors.com/changelogs/android#3121-2021-11-24) <a href="#id-3121-2021-11-24" id="id-3121-2021-11-24"></a>

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-44) <a href="#fixed-44" id="fixed-44"></a>

* Fixed issue where LocationSource was Available before it was completely updated
* Various minor fixes

### \[3.12.0] 2021-11-23[​](https://docs.mapsindoors.com/changelogs/android#3120-2021-11-23) <a href="#id-3120-2021-11-23" id="id-3120-2021-11-23"></a>

#### Added[​](https://docs.mapsindoors.com/changelogs/android#added-12) <a href="#added-12" id="added-12"></a>

* Icon and labels are now handled independently
  * Icons and labels are now separate entities when computing overlaps/collisions
  * Icons and labels can now be shown/hidden at different zoom levels, according to the display rule
* Contextual routing information
  * Now able to allow for context taken from nearby POI's of a given type, using the MPDirectionsRenderer
* Support for authentication
  * Added interface to support single side sign-on from OpenIDConnect providers by setting tokens, which will allow access to otherwise restricted MapsIndoors API keys
* User authenticated booking
  * Revised booking interface to set a token, in order to allow for booking on user calenders

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-45) <a href="#fixed-45" id="fixed-45"></a>

* Significant improvements to loading performance
* Fixed issue where on marker click event was not forwarded properly to Google Maps
* Fixed rare issue where MapControl may never invoke the set listener, upon initialization (OnLoadingDataReadyListener)
* Fixed issue where markers may be retained on the map, when changing floors
* Various minor fixes

### \[3.11.2] 2021-11-5[​](https://docs.mapsindoors.com/changelogs/android#3112-2021-11-5) <a href="#id-3112-2021-11-5" id="id-3112-2021-11-5"></a>

#### Added[​](https://docs.mapsindoors.com/changelogs/android#added-13) <a href="#added-13" id="added-13"></a>

* `setLocationHideOnIconOverlapEnabled` can now be toggled dynamically

#### Changed[​](https://docs.mapsindoors.com/changelogs/android#changed-9) <a href="#changed-9" id="changed-9"></a>

* `setLabelMaxWidth` now takes DP (Device-independent Pixels) instead of actual pixels in its parameter

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-46) <a href="#fixed-46" id="fixed-46"></a>

* Files being deleted outside of scope

### \[3.11.1] 2021-10-29[​](https://docs.mapsindoors.com/changelogs/android#3111-2021-10-29) <a href="#id-3111-2021-10-29" id="id-3111-2021-10-29"></a>

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-47) <a href="#fixed-47" id="fixed-47"></a>

* Potential crash when initializing large solutions
* Tiles are now rendering with improved resolution
* Memory leaks

### \[3.11.0] 2021-10-27[​](https://docs.mapsindoors.com/changelogs/android#3110-2021-10-27) <a href="#id-3110-2021-10-27" id="id-3110-2021-10-27"></a>

#### Added[​](https://docs.mapsindoors.com/changelogs/android#added-14) <a href="#added-14" id="added-14"></a>

* Support for obstacle avoidance zones in routing
* Static method on MapsIndoors to disable internal SDK event logging
* Support for 'ladder' highways
* Icons for ramps, wheelchair ramps and wheelchair lifts
* 'Go to previous leg' behavior added on start marker of a routing line
* Line breaking ability for marker labels. Line breaks can now be enforced manually with '\n' in location names or automated to wrap based on a set labelWidth. (Currently only accessible though overriding LocationDisplayRules)

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-48) <a href="#fixed-48" id="fixed-48"></a>

* Wait times reflected correctly when using offline routing
* Search results are now naturally ordered
* Various loading & SDK initialization issues
* Various route directions rendering glitches
* Various crashes and issues

### \[3.10.3] 2021-09-21[​](https://docs.mapsindoors.com/changelogs/android#3103-2021-09-21) <a href="#id-3103-2021-09-21" id="id-3103-2021-09-21"></a>

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-49) <a href="#fixed-49" id="fixed-49"></a>

* Crash on file reads with external library.
* Fixed bug with Areas sometimes not being rendered correctly.

### \[3.10.2] 2021-09-13[​](https://docs.mapsindoors.com/changelogs/android#3102-2021-09-13) <a href="#id-3102-2021-09-13" id="id-3102-2021-09-13"></a>

#### Added[​](https://docs.mapsindoors.com/changelogs/android#added-15) <a href="#added-15" id="added-15"></a>

* MapsIndoors now triggers as ready when Locations are loaded.

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-50) <a href="#fixed-50" id="fixed-50"></a>

* Issue with `setApiKey` loading new Solutions. You can now switch between Solutions again by calling `setAPIKey`, and initializing a new `MapControl` object.
* Applying `PolygonDisplayRules` on Locations that does not have Polygon geometry no longer causes a crash
* Issue with Tiles not loading, if a custom Floor Selector is implemented
* Using `near` on `MPQuery` now gives a better ordering in the list in terms of what is near the set location
* Various bug fixes and stability issues

### \[3.10.1] 2021-09-08[​](https://docs.mapsindoors.com/changelogs/android#3101-2021-09-08) <a href="#id-3101-2021-09-08" id="id-3101-2021-09-08"></a>

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-51) <a href="#fixed-51" id="fixed-51"></a>

* Fixed a rare null pointer exception crash related to area polygon display rules rendering

### \[3.10.0] 2021-08-19[​](https://docs.mapsindoors.com/changelogs/android#3100-2021-08-19) <a href="#id-3100-2021-08-19" id="id-3100-2021-08-19"></a>

#### Added[​](https://docs.mapsindoors.com/changelogs/android#added-16) <a href="#added-16" id="added-16"></a>

* The MapsIndoors SDK records anonymous usage statistics and diagnostic events per default (if enabled in the CMS) and sends the logged data to a server at MapsPeople. Logging may be disabled entirely by calling `MapsIndoors.disableEventLogging(true)` on the SDK.

#### Deprecated[​](https://docs.mapsindoors.com/changelogs/android#deprecated-6) <a href="#deprecated-6" id="deprecated-6"></a>

* Deprecated `MapsIndoors.setOnMapsIndoorsReadyListener(onReadyListener)`. Use `MapsIndoors.addOnMapsIndoorsReadyListener(onReadyListener)` instead.

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-52) <a href="#fixed-52" id="fixed-52"></a>

* Polygon DisplayRules can now be applied to all Locations with a polygon, not just Areas
* Live Data badges now correctly scale according to the device's pixel density
* Various bug fixes and stability issues

### \[3.9.2] 2021-06-21[​](https://docs.mapsindoors.com/changelogs/android#392-2021-06-21) <a href="#id-392-2021-06-21" id="id-392-2021-06-21"></a>

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-53) <a href="#fixed-53" id="fixed-53"></a>

* Fixed rare null pointer crash on MPImageProvider
* Fixed issue with down-scoping datasets to basic scope, upon synchronizing

### \[3.9.1] 2021-06-10[​](https://docs.mapsindoors.com/changelogs/android#391-2021-06-10) <a href="#id-391-2021-06-10" id="id-391-2021-06-10"></a>

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-54) <a href="#fixed-54" id="fixed-54"></a>

* Routing animation no longer flashes when being animated
* The MapsPeople logo now shows when using a FragmentActivity
* Fixed a certificate issue with lower Android APIs making Live Data and Tiles unavailable
* Selected Locations are now shown, even if another Location was overlapping it with `setLocationHideOnIconOverlapEnabled`
* Various bug fixes and stability issues

#### Added[​](https://docs.mapsindoors.com/changelogs/android#added-17) <a href="#added-17" id="added-17"></a>

* Added two new Domain Types with default renderings (CO2 and Humidity)
* Made default rendered Live Data badge text more readable
* Added a method to change the text size of marker labels with `setMapLabelTextSize(int textSize)`

### \[3.9.0] 2021-05-17[​](https://docs.mapsindoors.com/changelogs/android#390-2021-05-17) <a href="#id-390-2021-05-17" id="id-390-2021-05-17"></a>

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-55) <a href="#fixed-55" id="fixed-55"></a>

* The POI's label text is now centered on the locaiton, when no icon is shown
* Search has been improved & the "near" parameter works as intended
* Various bugfixes & stability issues

#### Added[​](https://docs.mapsindoors.com/changelogs/android#added-18) <a href="#added-18" id="added-18"></a>

* LiveData domains for temerapture & count added
* LiveData topic for CiscoDNA positioning integration added
* Fade-in effect on MapsIndoors tiles (enabled by default)
* Set font styling of labels using setMapLabelFont() and setMapLabelTextSize() on the MapControl instance

### \[3.8.4] 2021-04-12[​](https://docs.mapsindoors.com/changelogs/android#384-2021-04-12) <a href="#id-384-2021-04-12" id="id-384-2021-04-12"></a>

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-56) <a href="#fixed-56" id="fixed-56"></a>

* Fixed issue with location source being stuck
* Fixed HTML routing instructions to align with iOS

### \[3.8.3] 2021-02-26[​](https://docs.mapsindoors.com/changelogs/android#383-2021-02-26) <a href="#id-383-2021-02-26" id="id-383-2021-02-26"></a>

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-57) <a href="#fixed-57" id="fixed-57"></a>

* Fixed time zone related issue causing crashes on Android <7

#### Added[​](https://docs.mapsindoors.com/changelogs/android#added-19) <a href="#added-19" id="added-19"></a>

* Added method to acquire Live Data-style badged icons on MapsIndoors object (getBadgedAvailabilityIcon())
* Added option to set a list of types or locations to search for, when using MPFilter

### \[3.8.2] 2021-02-4[​](https://docs.mapsindoors.com/changelogs/android#382-2021-02-4) <a href="#id-382-2021-02-4" id="id-382-2021-02-4"></a>

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-58) <a href="#fixed-58" id="fixed-58"></a>

* Fixed a crash happening when targeting API level 30 and running on an Android 11 device.

### \[3.8.1] 2021-01-29[​](https://docs.mapsindoors.com/changelogs/android#381-2021-01-29) <a href="#id-381-2021-01-29" id="id-381-2021-01-29"></a>

#### Added[​](https://docs.mapsindoors.com/changelogs/android#added-20) <a href="#added-20" id="added-20"></a>

* Address fields to Building
* Added pink as the new standard selection highlighting color (to help visually impaired users)

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-59) <a href="#fixed-59" id="fixed-59"></a>

* Various bugfixes

### \[3.8.0] 2021-01-07[​](https://docs.mapsindoors.com/changelogs/android#380-2021-01-07) <a href="#id-380-2021-01-07" id="id-380-2021-01-07"></a>

#### Added[​](https://docs.mapsindoors.com/changelogs/android#added-21) <a href="#added-21" id="added-21"></a>

* Support for booking

#### Changed[​](https://docs.mapsindoors.com/changelogs/android#changed-10) <a href="#changed-10" id="changed-10"></a>

* Made LiveData interfaces more intuitive and simpler.

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-60) <a href="#fixed-60" id="fixed-60"></a>

* Minor bugfixes and improvements

### \[3.7.0] 2020-10-22[​](https://docs.mapsindoors.com/changelogs/android#370-2020-10-22) <a href="#id-370-2020-10-22" id="id-370-2020-10-22"></a>

#### Added[​](https://docs.mapsindoors.com/changelogs/android#added-22) <a href="#added-22" id="added-22"></a>

* Support for offline datasets via the DataSetManager
* Rewrite of the internal networking layer, resulting in faster and more reliable networking
* Rewrite of the internal file handling, improving file system usage and speed
* Minor improvements

### \[3.6.1] 2020-10-15[​](https://docs.mapsindoors.com/changelogs/android#361-2020-10-15) <a href="#id-361-2020-10-15" id="id-361-2020-10-15"></a>

#### Added[​](https://docs.mapsindoors.com/changelogs/android#added-23) <a href="#added-23" id="added-23"></a>

* Support for rendering polygons (i.e. Areas) through DisplayRules

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-61) <a href="#fixed-61" id="fixed-61"></a>

* Various bugfixes

### \[3.6.0] 2020-10-01[​](https://docs.mapsindoors.com/changelogs/android#360-2020-10-01) <a href="#id-360-2020-10-01" id="id-360-2020-10-01"></a>

#### Added[​](https://docs.mapsindoors.com/changelogs/android#added-24) <a href="#added-24" id="added-24"></a>

* Support for Live Data added. Information and documentation about this new feature is available at [Live Data Guide](https://docs.mapsindoors.com/map/live-data/)

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-62) <a href="#fixed-62" id="fixed-62"></a>

* Various bugfixes

### \[3.5.2] - 2020-07-15[​](https://docs.mapsindoors.com/changelogs/android#352---2020-07-15) <a href="#id-352---2020-07-15" id="id-352---2020-07-15"></a>

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-63) <a href="#fixed-63" id="fixed-63"></a>

* Fixed an issue that could cause an IndexOutOfBoundsException if data got corrupted.
* Issue causing MPApiKeyValidatorService to always return true, no matter the validity.
* Fixed an issue that caused the FloorSelector to occasionally show outside the selected venue.
* Fixed an issue that caused selections to be shown across floors.
* An issue that occationally caused a crash when switching between travel modes in offline routing

### \[3.5.1] - 2020-07-07[​](https://docs.mapsindoors.com/changelogs/android#351---2020-07-07) <a href="#id-351---2020-07-07" id="id-351---2020-07-07"></a>

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-64) <a href="#fixed-64" id="fixed-64"></a>

* Changed the getField() method in MPLocation to be case insensitive

### \[3.5.0] - 2020-06-16[​](https://docs.mapsindoors.com/changelogs/android#350---2020-06-16) <a href="#id-350---2020-06-16" id="id-350---2020-06-16"></a>

#### Added[​](https://docs.mapsindoors.com/changelogs/android#added-25) <a href="#added-25" id="added-25"></a>

* Selection of default Floor when panning between Buildings

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-65) <a href="#fixed-65" id="fixed-65"></a>

* Locations disappear after applying Category Filter
* Fixed an issue in the Floor Selector that prevented it from hiding in some cases

### \[3.4.0] - 2020-03-18[​](https://docs.mapsindoors.com/changelogs/android#340---2020-03-18) <a href="#id-340---2020-03-18" id="id-340---2020-03-18"></a>

#### Added[​](https://docs.mapsindoors.com/changelogs/android#added-26) <a href="#added-26" id="added-26"></a>

* Feature: Ability to override a Location's display rule at runtime (in v2 this was achieved by using `Location.setType( type )`):
  * `MapControl.setDisplayRule( displayRule, location | locations )`: Sets a display rule on the given Location(s) that overrides the current ones being used.
  * `MapControl.setDisplayRule( displayRuleName, location | locations )`: Sets display rule (by its type - name) on the given Location(s) that overrides the current ones being used.
  * `MapControl.getDisplayRule( location )`: Retrieves the current display rule being used by the given Location.
  * `MapControl.resetDisplayRule( location | locations )`: Removes the override display rule on the given Location(s).
* `MPFilter.Builder.setIgnoreLocationActiveStatus( ignoreActiveToFromStatus )`: Makes queries return Location that are marked as inactive using the "active from"/"active to" mechanism.
* `MPApiKeyValidatorService`: added a couple of new methods:
  * `checkAPIKeyValidity( apiKey, listener )`: Checks the validity of the given MapsIndoors API key. The SDK doesn't need to be initialized in order to call this method.
  * `validateAPIKeyStringFormat( apiKey )`: Checks that the given API key string format is a valid one. This method only checks the string format.
* Feature: `RoomId` has been replaced by `ExternalId`. The following methods have been added:
  * `MPLocation.getExternalId()`: Retrieves the `externalId` property, if available. Should be used instead of the now deprecated `MPLocation.getRoomId()`.
  * `MPLocation.Builder.setExternalId( externalId )`: Sets a custom `externalId` (a db item id, etc.). This replaces `MPLocation.Builder.setRoomId( roomId )`.
  * `Building.getExternalId()` and `Venue.getExternalId()`

#### Deprecated[​](https://docs.mapsindoors.com/changelogs/android#deprecated-7) <a href="#deprecated-7" id="deprecated-7"></a>

* `MPFilter.Builder.setIgnoreSearchableStatus( ignoreSearchableStatus )`: Use `MPFilter.Builder.setIgnoreLocationSearchableStatus( ignoreSearchableStatus )` instead.
* `MPLocation.getRoomId()`: Use `MPLocation.getExternalId()` instead.
* `MPLocation.Builder.setRoomId( roomId )`: Use `MPLocation.Builder.setExternalId( externalId )` instead

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-66) <a href="#fixed-66" id="fixed-66"></a>

### \[3.3.3] - 2020-02-25[​](https://docs.mapsindoors.com/changelogs/android#333---2020-02-25) <a href="#id-333---2020-02-25" id="id-333---2020-02-25"></a>

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-67) <a href="#fixed-67" id="fixed-67"></a>

* Populate the right floor index for venues, buildings, floors search results locations.

### \[3.3.2] - 2020-01-29[​](https://docs.mapsindoors.com/changelogs/android#332---2020-01-29) <a href="#id-332---2020-01-29" id="id-332---2020-01-29"></a>

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-68) <a href="#fixed-68" id="fixed-68"></a>

* Fix "Software rendering doesn't support hardware bitmaps" crash.

### \[3.3.1] - 2020-01-13[​](https://docs.mapsindoors.com/changelogs/android#331---2020-01-13) <a href="#id-331---2020-01-13" id="id-331---2020-01-13"></a>

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-69) <a href="#fixed-69" id="fixed-69"></a>

* Fix default floor selector crash
* Fix icons loading failure for icons hosted in firebase storage.

### \[3.3.0] - 2019-12-20[​](https://docs.mapsindoors.com/changelogs/android#330---2019-12-20) <a href="#id-330---2019-12-20" id="id-330---2019-12-20"></a>

#### Added[​](https://docs.mapsindoors.com/changelogs/android#added-27) <a href="#added-27" id="added-27"></a>

* Support of searchable and activity bits for locations.
* Default floor on buildings:
  * `Building.getDefaultFloor()`: Returns a building's default `Floor`, if any has been set from the CMS.
  * `Building.getDefaultFloorIndex()`: Returns a building's default **floor index**, if any has been set from the CMS. It will return `Floor.NO_FLOOR_INDEX` if the default floor is not available (`Building.getDefaultFloor() == null`).
  * `Building.getFloorMap()`: Returns a list of floor indices and localized names for the given building.
* Custom fields, exposed in the following classes: `Venue`, `Building`, `MPLocation`, `Category`, `POIType`. If available, they can be retrieved by using `getField( fieldName )`.
* Status data. For detailed info, please refer to the [status bitfield description](https://docs.mapsindoors.com/api/v1/#detailed-data-description) in our Integration API documentation.
  * The following methods are available in `MPLocation`:
    * `getStatus()`: Returns a status bitfield. For more info, please check the above link.
    * `isActive()`: If an element **is not** active, it will **not** be given to the apps.
    * `isSearchable()`: If an element **is not** searchable it might be shown on the map, but **is not** show up **in** searches.
* Better Display Rule icon and label visibility control by using:
  * `DisplayRule.getIconVisible()`
  * `DisplayRule.getLabelVisible()`
  * `LocationDisplayRule.Builder.setShowIcon( show )`
  * `LocationDisplayRule.Builder.setShowLabel( show )`
* New Floor selector:
  * Use the new interface (`FloorSelectorInterface`) to create a custom floor selector.
  * Turn on/off the floor selector (default or custom) using `MapControl.enableFloorSelector( enable )`.
  * Query the its current status with `MapControl.isFloorSelectorEnabled()`.
* New `displaySearchResults` overloads in `MapControl` :
  * `displaySearchResults( inputLocations, animateCamera, cameraPadding, readyListener )`.
  * `displaySearchResults( inputLocations, animateCamera, cameraPadding, showInfoWindow, googleMapCameraUpdate, durationMs, googleMapCancelableCallback, readyListener )`.
* `SolutionInfo.hasLanguage( language )` (usage: `MapsIndoors.getSolutionInfo().hasLanguage( language )`): Check if the given language is available in the current dataset.
* `MPMapsIndoorsLocationSource.updateLocations( updatedLocations )`: Used to signal an update on the given `MPLocation` objects if the case the default Location Data Source is extended.
* New methods in the `Building` class:
  * `getFloorCount()`: Current building total floor count.
  * `getFloorMap()`: A HashMap containing floor index (key), floor name (value) pairs. Note that the floor name is localized.
* New shortcut methods in `MPLocation` to query for its geometry type: `isLocationOfTypePOI()`, `isLocationOfTypeRoom()`, etc.

#### Changed[​](https://docs.mapsindoors.com/changelogs/android#changed-11) <a href="#changed-11" id="changed-11"></a>

* `MapControl.setFloorSelector( floorSelector )`: It takes now a `FloorSelectorInterface` instead of a `IFloorSelector`.

#### Deprecated[​](https://docs.mapsindoors.com/changelogs/android#deprecated-8) <a href="#deprecated-8" id="deprecated-8"></a>

* `dbglog.useDebug()`: Use `dbglog.enableDeveloperMode( enable )` or `dbglog.enableDeveloperMode( enable, customTagPrefix )`.
* `dbglog.isDebugMode()`: Use `dbglog.isDeveloperMode()`.

#### Removed[​](https://docs.mapsindoors.com/changelogs/android#removed-1) <a href="#removed-1" id="removed-1"></a>

* `MapControl.setFloorSelectorType( FloorSelectorType )`: The new interface only provides Building data for the current visible in the Map View (or the closest to the camera target).

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-70) <a href="#fixed-70" id="fixed-70"></a>

* General bug fixing.
* Stabilizing many behaviours of the SDK.

### \[3.1.1] - 2019-05-27[​](https://docs.mapsindoors.com/changelogs/android#311---2019-05-27) <a href="#id-311---2019-05-27" id="id-311---2019-05-27"></a>

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-71) <a href="#fixed-71" id="fixed-71"></a>

* Fixed some issues related to the deinitialization of MapControl and MapsIndoors (class)

### \[3.1.0] - 2019-05-21[​](https://docs.mapsindoors.com/changelogs/android#310---2019-05-21) <a href="#id-310---2019-05-21" id="id-310---2019-05-21"></a>

#### Added[​](https://docs.mapsindoors.com/changelogs/android#added-28) <a href="#added-28" id="added-28"></a>

* Support for runtime (indoor tiles) map-style switching. Related methods added:
  * `Venue.getMapStyles()`: Gets a list of available map styles. Note that all venues share the map styles
  * `Venue.getDefaultMapStyle()`: Gets the default map style used by the SDK.
  * `Venue.isMapStyleValid( MapStyle )`: Checks the validity of the given map style
  * `MapControl.getMapStyles()`: Gets a list of available map styles. Note that all venues share the map styles
  * `MapControl.getMapStyle()`: Gets the current map style set with `MapControl.setMapStyle( MapStyle )`
  * `MapControl.setMapStyle( MapStyle )`: Sets the given map style as the current one. It can be invoked before or after `MapControl.init()`
* Ability to change a Display Rule visibility at runtime. Related methods:
  * `MapControl.getDisplayRules()`: Returns the aggregated display rules
  * `MapControl.getDisplayRule( type )`: Returns the display rule with the given name, if any found
  * `LocationDisplayRule.setVisible( show )`: Sets this Location Display Rule to be visible (based on the zoom on/off values) or not (marker icon not shown)
* MPLocation now exposes its Geometry by using:
  * `MPLocation.getGeometry()`: Retrieves the Geometry of an MPLocation (Point, PolygonGeometry, etc.)
  * `MPLocation.getGeometryType()`: Returns the Geometry type as a in integer value (Geometry.TYPE\_POINT, (Geometry.TYPE\_POLYGON, etc.)
  * `MPLocation.setGeometry( polygonGeometry )`: Sets the given PolygonGeometry as a location's Geometry
  * `MPLocation.setLocationType( locationType )`: Sets the location's type (poi, area, or room)
* Location data status listener:
  * In version 3, POI data (Locations) loading is not in sync with other data such as buildings, venues, etc. Both `MapsIndoors.synchronizeContent()` and `MapControl.init()` callbacks will be invoked once all but Location data is ready to consume. We've added an separate method that sets a listener for Location data only (`MapsIndoors.addLocationSourceOnStatusChangedListener()`).

#### Changed[​](https://docs.mapsindoors.com/changelogs/android#changed-12) <a href="#changed-12" id="changed-12"></a>

* Clustering:
  * `MapControl.setLocationClusteringEnabled( enable )` can be only invoked **BEFORE** `MapControl.init()`; doing so afterwards will throw an exception (if `dbglog.useDebug()` is set to `true`)
* Updated the network layer so in case of network errors, will serve cached data when/where possible

#### Deprecated[​](https://docs.mapsindoors.com/changelogs/android#deprecated-9) <a href="#deprecated-9" id="deprecated-9"></a>

* `Venue.getStyles()`: Use `Venue.getMapStyles()` instead
* `Venue.getDefaultStyle()`: Use `Venue.getDefaultMapStyle()` instead

#### Fixed[​](https://docs.mapsindoors.com/changelogs/android#fixed-72) <a href="#fixed-72" id="fixed-72"></a>

* Better handling of broken custom/advanced icon links.
