Android SDK
Changelog for the MapsIndoors Android SDK. This document structure is based on Keep a Changelog and the project adheres to Semantic Versioning.
- Android SDK V4
- Android SDK V3
[4.1.6] 2023-06-02
Fixed
- Fixed compilation issues, due to a build configuration
[4.1.5] 2023-06-01
Fixed
- Fixed crashes happening when loading new solutions while a load is ongoing
[4.1.4] 2023-05-25
Changed
- Updated Mapbox version to 10.13.0
Fixed
- 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
- Fixed occasional crashes when destroying MapsIndoors
- Fixed occasional crash when selecting location after load
[4.1.2] 2023-05-11
Fixed
- 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
Changed
- Made
MPMapBehavior
JSON serializable, and its getters public - Updated MapsPeople watermark
Fixed
- Fixed rare case where the SDK would load successfully but still crash
- Fixed being unable to get
MPSolutionDisplayRule
s by name - Fixed issue where tiles would not update when switching floors
[4.1.0] 2023-02-21
Deprecated
- Deprecated
MPBuilding.getInitialZIndex()
and addedgetInitialFloorIndex()
to replace it - Deprecated
MPBuilding.getFloorByZIndex()
and addedgetFloorByIndex
to replace it - Deprecated
MPDataSetCache.setScope(Context, MPDataSetCacheScope)
and added `setScope(MPDataSetCacheScope) to replace it - Deprecated
MPDataSetCacheItem.getCacheSize(Context)
and addedgetCacheSize()
to replace it - Deprecated
MPDirectionsService(Context)
CTOR and addedMPDirectionsService()
to replace it - Deprecated
MPFloor.getZIndex()
and addedgetFloorIndex
to replace it - Deprecated
MPFloor.setZIndex()
and addedsetFloorIndex
to replace it - Deprecated
MPRouteCoordinate.getZIndex()
and addedgetFloorIndex
to replace it - Deprecated
MPRouteCoordinate.setZIndex()
and addedsetFloorIndex
to replace it - Deprecated
MPSolutionInfo
as it duplicates information fromMPSolution
Fixed
- 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
- Added Extension functions for converters, these are usable from kotlin projects
Fixed
- Fixed issue where SDK would try to use destroyed context to access files directory
- Fixed
MPSelectionBehavior
andMPFilterBehavior
super classMPMapBehavior
not being public - Fixed a number of memory leaks
[4.0.4] 2023-01-17
Fixed
- 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
- Added factory methods
fromValue(int)
andfromStringValue(String)
toMPCollisionHandling
- Added
removeOnFloorUpdateListener(OnFloorUpdateListener)
toMapControl
- Added
isInside(MPLatLng)
method toMPGeometry
Deprecated
- Deprecated
getCurrentStyle()
andsetCurrentStyle(String)
inMPFloor
Fixed
- 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
MPPoint
s with no floorIndexes toMPDirectionsService
would result in bugged routes - Fixed issue when generating
MPPolygonGeometry
fromMPMultiPolygonGeometry
- 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
- 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 aMPMapConfig
, instead of anActivity
Fixed
- 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
- Added
getLocationsByExternalIds
toMapsIndoors
- 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
- The list of layers can be accessed from the
Fixed
- 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
Added
- Support for new map providers
- Mapbox
- MapsIndoors can now be packaged with the Mapbox v10 SDK
- Mapbox
- 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 implementsMPEntity
, which includes but is not limited toMPLocation
,MPFloor
, andMPBuilding
- A new method for moving the camera to MapsIndoors locations, this new method
- 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
Changed
- 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'
- 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
- 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
- Has been renamed to
- Selection
- Selection, like filtering, has improved, it now uses a
MPSelectionBehavior
which is used to dictate the behavior of the selection on the map
- Selection, like filtering, has improved, it now uses a
- Initialization (MapsIndoors and MapControl)
- Now
MapsIndoors
is initialized with theload(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 methodcreate(MPMapConfig, onMapControlReady)
- The
onMapControlReady
listener will wait for MapControl to finish initializing, this guarantees thatMapControl
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 whenMapControl
finishes initializing- These settings can still be updated individually at runtime
- The
- Now
- Routing
MPRoutingProvider
has been renamed toMPDirectionsService
to align with other platformsMPDirectionsRenderer
has been simplified in use, after creationMPDirectionsRenderer(MapControl)
,setRoute(MPRoute)
can be called and it will display the route on the map
- Clustering and Collision handling has been moved from
MPAppConfig
toMPSolutionConfig
, and have recieved proper typing, Collision handling is now defined by an enumMPCollisionHandling
- Collision handling now has multiple states that allow for better control of how markers are shown on the map
Removed
- 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
Fixed
- Optimized memory management of icons
- Display rules are now applied much more consistently
[3.13.22] 2023-03-09
Changed
- Updated MapsPeople watermark
[3.13.21] 2023-01-10
Fixed
- Fixed issue where destroying
MapControl
could result in a crash
[3.13.20] 2023-01-02
Fixed
- Fixed issue where tiles would not render when map is loaded
[3.13.19] 2022-07-20
Added
- Re-introduced old overlap strategy where the entire marker would be made invisible if it overlapped another.
- Use
mapControl.setMarkerIndependentIconLabel(false)
to enable it.
- Use
Fixed
- 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
Fixed
- Fixed rare occurrence where the camera would move to the other side of the world during routing
[3.13.17] 2022-06-24
Fixed
- Fixed rare issue where routing to entry points might fail
- Fixed issue where icons would not update automatically
[3.13.16] 2022-06-23
Fixed
- Fixed sometimes deleted
PolygonDisplayRule
would leave behind aPolygon
on the map that could not be removed
[3.13.15] 2022-06-14
Fixed
getDisplayRule(MPLocation)
onMapControl
would return null, even when a display rule exists for the location
[3.13.14] 2022-06-10
Fixed
- 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
Fixed
- 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
Fixed
- 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
Fixed
- Issue with tint on shared drawables
- Stability fixes
[3.13.10] 2022-04-12
Added
- Interface for querying distance matrix services using
getDistanceMatrix()
onMPRoutingProvider
Fixed
- Various bugs and crashes
[3.13.9] 2022-04-01
Fixed
- Crash where the SDK would potentially execute on the wrong thread when modifying display rules
[3.13.8] 2022-03-31
Fixed
- Crash where large marker icons would exceed the device's OpenGL max texture size limit
[3.13.7] 2022-03-17
Fixed
- 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
Added
- Added
isInitialized()
toMPDataSetCacheManager
to check whether it has been initialized
Fixed
- Toned down rendering frequency in some cases
- Introduced a number of stability fixes
[3.13.5] 2022-03-02
Fixed
- 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
Added
- Added
Venue.hasGraph()
which checks whether the venue has a valid routing graph configured
Fixed
- Fixed App User Roles not syncing correctly, leading to unexpected behavior
[3.13.3] 2022-02-16
Changed
- Optimized inital rendering of new Markers
- User roles set on MapsIndoors are now implicitly applied to directions, unless explicitly set on MPRoutingProvider
Deprecated
- Deprecated
MapControl.unbindFromMap()
Fixed
- Fixed issue where
MapControl.init()
's listener was invoked too soon
[3.13.2] 2022-02-10
Fixed
- 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
Fixed
- 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
Changed
- 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 beforeMapsIndoors.Initialize()
- Improved SDK stability when receiving unknown HTTP responses
Deprecated
- Deprecated
MPRoutingProvider.queryMultipleDestinations()
- Deprecated
RouteStep.addSteps()
- Use
RouteStep.setSteps()
instead
- Use
Fixed
- 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
Fixed
- 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
Fixed
- 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
Fixed
- 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
Added
- Added
MPConstants
, which in this first iteration exposes a number of constants related to Z-index levels on the google map
Changed
- Upped target SDK version to 31 (Android 12)
- Made changes to rendering such that the contents of the map are updated more often
Deprecated
- Deprecated
MPDatasetCacheManager.getConcurrentTaskLimit()
- Deprecated
MPDatasetCacheManager.setConcurrentTaskLimits()
Fixed
- 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
Added
- Added
getTranslatedName()
to POIType, which can get the name of a type in plaintext in the correct language - Added
getLatLngBounds()
to Route
Deprecated
Route.getWaypoint_order()
Fixed
- 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
Fixed
- Fixed issue where LocationSource was Available before it was completely updated
- Various minor fixes
[3.12.0] 2021-11-23
Added
- 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
- 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
Added
setLocationHideOnIconOverlapEnabled
can now be toggled dynamically
Changed
setLabelMaxWidth
now takes DP (Device-independent Pixels) instead of actual pixels in its parameter
Fixed
- Files being deleted outside of scope
[3.11.1] 2021-10-29
Fixed
- Potential crash when initializing large solutions
- Tiles are now rendering with improved resolution
- Memory leaks
[3.11.0] 2021-10-27
Added
- 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
- 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
Fixed
- Crash on file reads with external library.
- Fixed bug with Areas sometimes not being rendered correctly.
[3.10.2] 2021-09-13
Added
- MapsIndoors now triggers as ready when Locations are loaded.
Fixed
- Issue with
setApiKey
loading new Solutions. You can now switch between Solutions again by callingsetAPIKey
, and initializing a newMapControl
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
onMPQuery
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
Fixed
- Fixed a rare null pointer exception crash related to area polygon display rules rendering
[3.10.0] 2021-08-19
Added
- 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
- Deprecated
MapsIndoors.setOnMapsIndoorsReadyListener(onReadyListener)
. UseMapsIndoors.addOnMapsIndoorsReadyListener(onReadyListener)
instead.
Fixed
- 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
Fixed
- Fixed rare null pointer crash on MPImageProvider
- Fixed issue with down-scoping datasets to basic scope, upon synchronizing
[3.9.1] 2021-06-10
Fixed
- 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
- 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
Fixed
- 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
- 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
Fixed
- Fixed issue with location source being stuck
- Fixed HTML routing instructions to align with iOS
[3.8.3] 2021-02-26
Fixed
- Fixed time zone related issue causing crashes on Android <7
Added
- 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
Fixed
- Fixed a crash happening when targeting API level 30 and running on an Android 11 device.
[3.8.1] 2021-01-29
Added
- Address fields to Building
- Added pink as the new standard selection highlighting color (to help visually impaired users)
Fixed
- Various bugfixes
[3.8.0] 2021-01-07
Added
- Support for booking
Changed
- Made LiveData interfaces more intuitive and simpler.
Fixed
- Minor bugfixes and improvements
[3.7.0] 2020-10-22
Added
- 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
Added
- Support for rendering polygons (i.e. Areas) through DisplayRules
Fixed
- Various bugfixes
[3.6.0] 2020-10-01
Added
- Support for Live Data added. Information and documentation about this new feature is available at Live Data Guide
Fixed
- Various bugfixes
[3.5.2] - 2020-07-15
Fixed
- 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
Fixed
- Changed the getField() method in MPLocation to be case insensitive
[3.5.0] - 2020-06-16
Added
- Selection of default Floor when panning between Buildings
Fixed
- 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
Added
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 byExternalId
. The following methods have been added:MPLocation.getExternalId()
: Retrieves theexternalId
property, if available. Should be used instead of the now deprecatedMPLocation.getRoomId()
.MPLocation.Builder.setExternalId( externalId )
: Sets a customexternalId
(a db item id, etc.). This replacesMPLocation.Builder.setRoomId( roomId )
.Building.getExternalId()
andVenue.getExternalId()
Deprecated
MPFilter.Builder.setIgnoreSearchableStatus( ignoreSearchableStatus )
: UseMPFilter.Builder.setIgnoreLocationSearchableStatus( ignoreSearchableStatus )
instead.MPLocation.getRoomId()
: UseMPLocation.getExternalId()
instead.MPLocation.Builder.setRoomId( roomId )
: UseMPLocation.Builder.setExternalId( externalId )
instead
Fixed
[3.3.3] - 2020-02-25
Fixed
- Populate the right floor index for venues, buildings, floors search results locations.
[3.3.2] - 2020-01-29
Fixed
- Fix "Software rendering doesn't support hardware bitmaps" crash.
[3.3.1] - 2020-01-13
Fixed
- Fix default floor selector crash
- Fix icons loading failure for icons hosted in firebase storage.
[3.3.0] - 2019-12-20
Added
Support of searchable and activity bits for locations.
Default floor on buildings:
Building.getDefaultFloor()
: Returns a building's defaultFloor
, 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 returnFloor.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 usinggetField( fieldName )
.Status data. For detailed info, please refer to the status bitfield 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.
- The following methods are available in
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()
.
- Use the new interface (
New
displaySearchResults
overloads inMapControl
: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 givenMPLocation
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
MapControl.setFloorSelector( floorSelector )
: It takes now aFloorSelectorInterface
instead of aIFloorSelector
.
Deprecated
dbglog.useDebug()
: Usedbglog.enableDeveloperMode( enable )
ordbglog.enableDeveloperMode( enable, customTagPrefix )
.dbglog.isDebugMode()
: Usedbglog.isDeveloperMode()
.
Removed
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
- General bug fixing.
- Stabilizing many behaviours of the SDK.
[3.1.1] - 2019-05-27
Fixed
- Fixed some issues related to the deinitialization of MapControl and MapsIndoors (class)
[3.1.0] - 2019-05-21
Added
- 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 stylesVenue.getDefaultMapStyle()
: Gets the default map style used by the SDK.Venue.isMapStyleValid( MapStyle )
: Checks the validity of the given map styleMapControl.getMapStyles()
: Gets a list of available map styles. Note that all venues share the map stylesMapControl.getMapStyle()
: Gets the current map style set withMapControl.setMapStyle( MapStyle )
MapControl.setMapStyle( MapStyle )
: Sets the given map style as the current one. It can be invoked before or afterMapControl.init()
- Ability to change a Display Rule visibility at runtime. Related methods:
MapControl.getDisplayRules()
: Returns the aggregated display rulesMapControl.getDisplayRule( type )
: Returns the display rule with the given name, if any foundLocationDisplayRule.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 GeometryMPLocation.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()
andMapControl.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()
).
- In version 3, POI data (Locations) loading is not in sync with other data such as buildings, venues, etc. Both
Changed
- Clustering:
MapControl.setLocationClusteringEnabled( enable )
can be only invoked BEFOREMapControl.init()
; doing so afterwards will throw an exception (ifdbglog.useDebug()
is set totrue
)
- Updated the network layer so in case of network errors, will serve cached data when/where possible
Deprecated
Venue.getStyles()
: UseVenue.getMapStyles()
insteadVenue.getDefaultStyle()
: UseVenue.getDefaultMapStyle()
instead
Fixed
- Better handling of broken custom/advanced icon links.