[4.33.0] - 2024-04-29


  • Fixed an issue with polygons that were clickable even though they were not visible.


  • Extended Mapbox v3 handles:

    • Added two new functions: setSlot() and getSlot(). It is now possible to set a different value for slot property on a specific layer.

[4.32.0] - 2024-04-16


  • Fixed an issue where labels were not visible in the Safari browser for Google Maps.

  • Fixed an issue where the direction polyline was rendered in the wrong order for Mapbox v3.


  • Extended Label Style:

    • Added new labelType called Graphic Label.

    • Graphic Label: Only visible when Graphic Label type is selected. Opens Media Library with prefiltered MapsIndoors Labels. Controls what image is used as background image of a Graphic Label.

[4.31.0] - 2024-03-25


  • Fixed selection issue when selection pin was not elevated on top of extrusions for Mapbox v3.

  • Fixed an issue with labelStyle.haloWidth, labelStyle.haloBlur and labelStyle.textOpacity not respecting value 0.

  • Fixed an issue when Mapbox v3 map markers were visible even when they were disabled.

  • Fixed an issue with setting solution API Key not working after the map was initialized.


  • Exposed three new methods for Mapbox v3 map view:

    • hideFeatures(): sets visibility of passed array of MapboxFeatures to none.

    • MapboxFeatures: gets MapboxFeatures that visibility can be set to none.

    • getHiddenFeatures(): gets currently hidden features.

[4.30.0] - 2024-02-15


  • Upgraded MICommon to v3.6.1 to accommodate more strict CSP headers.


  • Fixed the TypeError: this.getMapView(...).setFloorPlan is not a function error.

  • Fixed an issue where using fractional zoom levels in DisplayRules caused rendering issues.


  • Support for setting Locations as selectable or non-selectable.

[4.29.3] - 2024-02-06


  • Fixed an issue with the setDisplayRule() method that prevented the set DisplayRule from being applied.

[4.29.2] - 2024-02-05


  • Fix Flat Label interpolation on zoom levels above 22.

[4.29.1] - 2024-01-30


  • Issue when Mapbox' extruded buildings were visible after the page reload.

[4.29.0] - 2024-01-24


  • Support for two new types of labels: Text and Flat.

  • New section to Display Rules called Label Style where you can style:

    • labelType: Label type displayed on the map, either Text or Flat.

    • textSize: Controls the size of the label.

    • textColor: Controls the color of the label.

    • textOpacity: Controls the opacity of the label.

    • haloColor: Controls the color of the halo effect around the label.

    • haloWidth: Width of the halo effect around the label.

    • haloBlur: Controls the blur effect of the halo effect.

    • bearing: Only visible when Flat Label type is selected. Controls bearing of the Flat Label.

[4.28.0] - 2024-01-23


  • Support for 2D Walls (floor plans).

  • Constructor parameter: buildingSelectionMode for specifying the building selection mode (manual or automatic). Defaults to automatic.

  • Constructor parameter: floorSelectionMode for specifying the floor selection mode (manual or automatic). Defaults to automatic.

  • setBuildingSelectionMode(mode): Sets the building selection mode to either manual or automatic.

  • getBuildingSelectionMode(): Returns the current building selection mode.

  • setFloorSelectionMode(mode): Sets the floor selection mode to either manual or automatic.

  • getFloorSelectionMode(): Returns the current floor selection mode.

  • avoidHighwayTypes and excludeHighwayTypes parameters to DistanceMatrixService.getDistanceMatrix():

    • Both parameters are optional string arrays of highway types to avoid or exclude when calculating a distance matrix.

    • Both parameters take precedence over the avoidStairs parameter.

  • avoidHighwayTypes and excludeHighwayTypes parameters to DirectionsService.getRoute():

    • Both parameters are optional string arrays of highway types to avoid or exclude when calculating a route.

    • Both parameters take precedence over the avoidStairs parameter.

  • Supported highway types for avoidHighwayTypes and excludeHighwayTypes parameters:

    • 'ramp', 'stairs', 'ladder', 'escalator', 'travelator', 'elevator', 'unclassified', 'residential', 'footway', 'wheelchairramp', 'wheelchairlift'


  • Live data badges is now also visible when the POI is highlighted or selected.

[4.27.0] - 2024-01-16


  • New MapView: MapboxV3View.

    • Support for Mapbox GL JS v3.

    • Exposed map view constructor parameters:

      • mapsIndoorsTransitionLevel: controls transition between Mapbox and MapsIndoors data.

      • showMapMarkers: boolean parameter that dictates if Mapbox map markers should be shown or not. By default Mapbox markers will be hidden when MapsIndoors data is shown.

      • lightPreset: sets global light. Can be set to: 'day', 'dawn', 'dusk' or 'night'.

[4.26.5] - 2023-12-11


  • A Mapbox-related issue where highlighted Locations were hidden due to collisions with other Locations.

[4.26.4] - 2023-12-07


  • To avoid rendering issues, the ViewState is not updated before a floor has been set.

  • Google Maps DirectionsService now uses the set language.

[4.26.3] - 2023-11-29


  • Resolved issue where Mapbox DistanceMatrix calls failed if only one origin and one destination were specified.

[4.26.2] - 2023-11-28


  • Fixed default badgePosition for the hoverHighlight state.

[4.26.1] - 2023-11-24


  • Fixed an issue with DisplayRules where the iconPlacement property would not be respected.

  • Fixed an issue with DisplayRules where the badgePosition property would not be respected.

[4.26.0] - 2023-11-23


  • Highlight locations: Introduced a new highlight() method to visually emphasize specific locations on the map. This method takes an array of location IDs as its argument. It shares the same functionality and arguments as the filter() method, providing an alternative way to filter locations based on their IDs. The getHighlight() method returns an array containing the IDs of all currently highlighted locations.

  • Select a location: Added new methods selectLocation() and deselectLocation() to control the selection of specific locations on the map. Use selectLocation() to select a location and deselectLocation() to clear the current selection. The getSelectedLocation() method returns the currently selected location object.

  • Hover a location: Introduced methods hoverLocation() and unhoverLocation() to manage the hovered location. Use hoverLocation() to set a location as hovered and unhoverLocation() to remove the hovered state. The getHoveredLocation() method returns the currently hovered location object.

  • State DisplayRules: Added stateDisplayRules to the Solution Config, allowing users to specify which states should be displayed for locations on the map. Available states include hover, highlight, selection, hoverHighlight, and hoverSelection.

[4.25.0] - 2023-10-30


  • Added new tilt(pitch: number) and rotate(bearing: number) methods to the MapboxView class to align the interface between the GoogleMapsView and MapboxView classes.

  • Added a common set of getBearing() and getPitch() methods to both GoogleMapsView and MapboxView classes.

[4.24.7] - 2023-08-28


  • Added support for zoom levels 23, 24, 25 and 999 (acting as "max zoom"). These are only rendered when using Mapbox map.

[4.24.6] - 2023-08-22


[4.24.4] - 2023-08-03


  • Labels for Venues and Building were set not to be visible by default.

[4.24.3] - 2023-07-26


  • Clicking on a 3D model would under some circumstances emit the wrong Location in the click event.

  • mouseenter and mouseleave events now also trigger for polygons with an opacity of 0.

  • mouseenter and mouseleave events now also trigger when Locations appear or disappear when zooming in or out (due to Display Rule zoom levels).

[4.24.2] - 2023-07-12


  • Only sync derived geometries if the 3D module is enabled.

[4.24.1] - 2023-07-11


  • The rendering of 2D models on iOS devices.

[4.24.0] - 2023-07-06


  • Support for an upcoming position control Web Component.

[4.23.1] - 2023-06-29


  • Directions on Google Maps rendering below polygons with a fill color.

  • Polygon styling from the main display rule would show on venue, building, and floor polygons.

  • Setting the polygon stroke width to 0 would render a 2px width stroke around it.

  • The PositionControl button would under some circumstances not be visible.

  • In some cases, Mapbox wouldn’t show tiles when zoomed to the max zoom level.

[4.23.0] - 2023-06-23


  • mapsindoors.MapsIndoors.addVenuesToSync(venueIds: string[]) - Adds one or more venue IDs to the list of venues to synchronize data for.

  • mapsindoors.MapsIndoors.removeVenuesToSync(venueIds: string[]) - Removes one or more venue IDs from the list of venues to synchronize data for.


  • The SDK usage logging is now correctly sent before the page unloads.


  • The rendering of 2D models on Mapbox now uses WebGL and three.js to improve performance.

[4.22.0] - 2023-06-14


  • The MapsIndoors class will now emit a mouseenter event when the cursor of a pointing device is moved so it is within the bounds of a Location.

  • The MapsIndoors class will now emit a mouseleave event when the cursor of a pointing device is moved so it leaves the bounds of a Location.

[4.21.6] - 2023-05-31


  • Rare timing issue causing the Mapbox map to crash.

[4.21.5] - 2023-04-25


  • A leftover console message was removed.

[4.21.4] - 2023-02-22


  • The light setup for 3D models for a more accurate color representation.


  • The issue that caused the 3D models to blink when panning the map.

[4.21.3] - 2023-02-22


  • Support for Solution Config

  • Support for Settings 3D


  • Updated the MapsPeople logo


  • Fixed a bug occurring when using deallocate with the map

  • Aligned 3D rotation across platforms

  • Fixed timing issue for 2D and 3D layers on Mapbox.

[4.21.2] - 2023-02-22


  • Fix slow animation in Mapbox when fitting to new map bounds.

[4.21.1] - 2022-12-13


  • Fix a bug where wrong or flickering MapsIndoors tiles were sometimes shown on a Google Maps map.

  • MapsIndoors tiles will now be correctly changed when changing the MapsIndoors API key.

[4.21.0] - 2022-10-27


  • Support for getting locations by external ID.

[4.20.2] - 2022-10-25


  • Fix bug where a runtime 3D model URL change would not render the new model.

[4.20.1] - 2022-10-11


  • Fix a bug where the wrong floor was sometimes shown.

[4.20.0] - 2022-10-06


  • Support for 2D models on Mapbox maps.

[4.19.0] - 2022-09-29


  • Support for 2D models on Google maps.


  • MICommon has been updated to the latest version.

[4.18.1] - 2022-09-07


  • Labels are now centered when the icon is not visible.

[4.18.0] - 2022-08-31


  • Support for wall extrusions, room extrusions, and 3D models on Mapbox maps.

[4.17.7] - 2022-07-12


  • Device position dot and circle are now always shown no matter how PositionControl.watchPosition is invoked.

[4.17.6] - 2022-04-22


  • Fix bug where Live Data badges on locations were not always removed when disabling a Live Data Domain.

[4.17.5] - 2022-04-13


  • Creating MPBooking objects now works again.

[4.17.4] - 2022-04-11


  • Animated directions will now always start when rendering a route, and will also render on a per-leg level.

[4.17.3] - 2022-04-05


  • Renamed the labelTemplate property on the DefaultDisplayRule to label to match with the DisplayRule interface.

  • Fix bug where directions line on a Mapbox map in some instances would not be rendered.

  • Add missing documentation of required parameter in the mapsindoors.directions.MapboxProvider.

  • Fix bug where the set language was not used when requesting Mapbox directions.

[4.17.2] - 2022-02-03


  • Locations receiving Live Data position updates will no longer disappear when panning the map.

  • Live Data is now correctly resumed with the most recent updates when changing user role.

  • Floor Selector styles are no longer missing.

[4.17.1] - 2022-01-13


  • In some cases, the MapsPeople logo would not be visible.

  • All icons are now added to MapBox, to prevent the "Image ... could not be loaded." warning in the console.

  • strokeFill, strokeColor, and strokeWeight is now correctly applied when using setBuildingOutlineOptions().

[4.17.0] - 2021-12-21


  • User authenticated booking.


  • Label and icon can now be visible at different zoom level ranges.

[4.16.0] - 2021-12-07


  • Disabling Live Data will now remove badges from icons when using the default callback.


  • In some cases, when adding the MapsPeople logo to the map, the SDK would throw an error.

  • Live Data now sends correct Http headers.

  • LiveDataInfo.activeDomainTypes() now always returns a promise.

[4.15.0] - 2021-11-18


  • Labels on Google Maps now support line breaks. A label containing will now be broken into two lines.

  • labelMaxWidth on DisplayRule sets the max-width in px for a label. Longer labels will be wrapped over multiple lines.

[4.14.1] - 2021-11-03


  • AppUserRoles set via MapsIndoors.setUserRoles is now applied when calling DirectionsService.getRoute

[4.14.0] - 2021-09-13


  • Updated the JSDOC template used for the reference guide.


  • The LocationsService now supports filtering by Location type. (mapsindoors.services.LocationsService.getLocations({types: ['Staris']})).

  • synchronizeContent() has been added to MapsIndoors as a static member. It will synchronize the MapsIndoors data from the backend to the client when called.

[4.13.0] - 2021-08-17


  • Animated directions for MapBox


  • The "Uncaught (in promise) TypeError: Cannot read property 'flush' of undefined" error.

[4.12.1] - 2021-06-24


  • Location icons are now internally requested with size parameters instead of scale.

[4.12.0] - 2021-06-17


  • Support for (and default rendering of) Live Data Domain Types co2 and humidity.

  • The Location id is now added to the request when deleting a booking.


  • Reduce icon flicker when applying Live Data badges.

  • Default badge rendering of unknown Live Data Occupancy can now handle unknown number of people.

  • In some cases setting the stroke- and fill-opacity for a Location Type would fail.

[4.11.2] - 2021-06-03


  • Calling mapsindoors.MapsIndoors.setLanguage() will now trigger a refresh of the cached Locations.

  • Reduces the amount of HTTP requests when using Live Data.

[4.11.1] - 2021-05-27


  • The radius combined with the near parameter will now reduce the number of Locations returned by LocationsService.getLocations() to those within that radius from the location (MapsIndoors Location or latitude/longitude) specified by near.

  • The LocationsService will now log usage statistics.

[4.11.0] - 2021-05-20


  • Support for (and default rendering of) Live Data Domain Types temperature and count.


  • The default Live Data badge rendering is now based on Domain Type hierarchy: availability+occupancy > availability > occupancy > temperature > count.

  • The default label styling has been refreshed and is now aligned with out showcase web app.

[4.10.0] - 2021-05-18


  • Animated directions for Google Maps.


  • A bug that caused the outdoor parts of the directions polyline to not be shown if the current Floor Index wasn't 0.

[4.9.1] - 2021-05-05


  • A bug that caused icons with Live Data badges to look unsharp/fuzzy.

  • A timing issue that could cause a TypeError: Cannot read property 'toString' of undefined error in the console.

[4.9.0] - 2021-04-28


  • deallocate method on MapsIndoors class that will clean up and release resources associated with the MapsIndoors instance.

[4.8.1] - 2021-04-28


  • A bug in the DirectionsService that would cause routes between Venues to fail.

  • A bug in the styling of labels that prevented the ShadowBlur from being changed.

  • A bug in the styling of labels where strokeStyle would not be applied for labels on Google Maps.

[4.8.0] - 2021-04-19


  • SDK Event logging.


  • Labels are now clickable on Google Maps.

  • The directions steps are now aligned across the different directions providers.

[4.7.0] - 2021-04-12


  • Live Data icon badges can now show badges that combine info from both the Occupancy and Availability Domains.

  • The LocationsService will now emit a update_completed event when data has been synchronized with the backend.


  • Fixed a bug in DirectionsRenderer, that could cause a route polyline not to be shown on the map.

  • Fixed label placement for Mapbox, so they are placed in the same location as labels on Google Maps.

  • Fixed a bug in the processing of display rules, that caused room polygons not to be clickable.

  • Fixed maxZoom offset for MapBoxView.

[4.6.2] - 2021-03-15


  • A bug in the processing of display rules caused some locations to be missing from the map.

[4.6.1] - 2021-03-11


  • Fixing an issue where the Location Service in some circumstances wouldn't return Locations

  • Fixed bug where Live Data was not shown

[4.6.0] - 2021-03-01


  • Areas - It's now possible to render Areas on the map using Display Rules.

[4.5.2] - 2021-02-23


  • MICommon updated to 2.1.0 with improved distance/text ranking correlation.

[4.5.1] - 2021-02-16


  • A bug in the directions renderer where directions going from a POI not on the ground floor to an external address would not render correctly on the map.

[4.5.0] - 2021-02-01


  • Booking service - Adds support for booking of Locations. It requires integration to a calendar provider e.g. Google Calendar for this to work. For more information about our Booking service and how to get started, please contact our sales team.


  • Prevent crash in case of nonexisting venue on location

  • Prevent crash in case of rendering badge on nonexisting icon

  • Improved distance/text ranking correlation (micommon)

  • In some cases the route step would have a wrong travel mode when routing from one venue to another.

[4.4.0] - 2021-01-11


  • fitBoundsPadding has been added as an optional parameter to the DirectionsRenderer constructor. It can be used to add a padding around the route when the map is fitted to a route leg or route step.

  • Step switching has been added to the DirectionsRenderer. It is now possible to call nextStep() or previousStep() to navigate between each step of the route. setStepIndex(stepIndex, legIndex) can be used to set the renderer to a specific step on a specific leg. If the legIndex is not specified then the current legIndex is used.


  • External IDs are now searchable.

  • Updated the documentation for the BuildingOutlineOptions.

  • getBuildingOutlineOptions() no longer returns undefined.

  • The optional parameters for DirectionsRenderer will now have an effect when set in the constructor.

  • Updated the documentation for LabelOptions. Added missing fontWeight property. Do note that fontWeight is not supported by MapBox.

[4.3.1] - 2021-01-06


  • Fixed wrong icon scale calculation.

[4.3.0] - 2021-01-04


  • LiveDataInfo class for checking if live data domain type is available on the loaded solution.


  • LiveDataManager enableLiveData() and subscribe() will no longer attempt to make subscription if the live data domain type is not available on the solution.


  • Prevent faulty travel modes when getting directions inside MapsIndoors venues.

[4.2.1] - 2020-12-17


  • The Directions Service would in some cases not return the most optimal route.

[4.2.0] - 2020-12-16


  • Support for Live Data via a new mapsindoors.LiveDataManager class. For more information about Live Data and how to get started, please contact our sales team.

  • mapsindoors.BadgeRenderer helper class to apply a badge onto an image.

  • Support for overriding a display rule and removing the override again (overrideDisplayRule(), revertDisplayRule()).

  • Optional ignoreOverrides parameter on getDisplayRule (defaults to false).

[4.1.5] - 2020-12-17


  • The Directions Service would in some cases not return the most optimal route.

[4.1.4] - 2020-12-16


  • Google Maps will enable zoom level 22 by default if the maxZoom is not specified. The SDK will now set maxZoom to 21 if maxZoom hasn't been specified when creating the MapView.

[4.1.3] - 2020-12-15


  • An issue where the default styling of labels would render almost unreadable labels.

  • An issue where the My Position icon didn't follow the users' movement.

  • Improved internal caching of the services to reduce network traffic.

  • Improved performance of the ViewState.


  • The SDK will now check if the 'z22' module is enabled and set the max zoom on the MapView to 22 unless the MapView is initialized with max zoom specified. (Contact our sales team to hear more about this feature).

  • The default color of the building outlines to #EF6CCE.

  • The default color for the Directions Renderer to #3071D9.

  • MICommon has been updated to the latest version.

[4.1.2] - 2020-12-03


  • An issue where directions between two venues would cause an error.


  • Minor updates of the documentation.

[4.1.1] - 2020-11-20


  • An issue where the Directions polyline would visible on all floors.

[4.1.0] - 2020-11-12


  • Added static functions setUserRoles and getUserRoles to the MapsIndoors object. mapsindoors.MapsIndoors.setUserRoles() and mapsindoors.MapsIndoors.getUserRoles().

  • Added start_context and end_context properties to MapsIndoors directions steps. The properties contain references to the venue, building, and floor for a given start or end location for a given step.


  • The MapsIndoors Directions Provider now uses the globaly set userRoles. The userRoles parameter on the Directions service if set will override this.

  • MICommon have been updated to the latest version.


  • The Google Map is now properly shown even though map center is not set.

  • An issue when the user clicked a room on a Google Map the click event would return null as the location property.

  • An issue where settting floor early would cause wrong map tiles to be shown.

[4.0.0] - 2020-10-29

The MapsIndoors JavaScript SDK V4 can now be used with Google Maps and Mapbox GL JS. It introduces several breaking changes, so read this carefully.



mapView classes that acts as map library adapters (map creation and common interface) to MapsIndoors:

  • mapsindoors.mapView.GoogleMapsView: mapView for Google Maps.

  • mapsindoors.mapView.MapboxView: mapView for Mapbox GL JS.


  • mapsIndoors.getFilter() returns the array of locations ids that the locations on the map are currently filtered by.


  • venue_changed event on MapsIndoors that fires if the venue changes after calling mapsIndoors.setVenue().


MapsIndoors class


  • Create an instance of a mapView, either mapsindoors.mapView.GoogleMapsView or mapsindoors.mapView.MapboxView.

  • Then create an instance of MapsIndoors like this: const mapsIndoors = new mapsindoors.MapsIndoors({mapView: mapViewInstance});.


  • setApiKey() is renamed to setMapsIndoorsApiKey().

  • getMapStyle() is renamed to getMapIndoorsStyle().

  • getMapStyles() is renamed to getMapIndoorsStyles().


  • All services (DistanceMatrixService, GeoCodeService, LocationsService, AppConfigService, DirectionsService, ShareService, SolutionsService, VenuesService) must now be accessed by the mapsindoors.services namespace, eg. mapsindoors.services.AppConfigService.


  • The class must now be instantiated and given an instance of en external directions provider, either mapsindoors.directions.GoogleMapsProvider or mapsindoors.directions.MapboxProvider.

  • A route Leg now encompasses a part of a route until a change in floor level, no matter the travel mode.

  • Step.abutters is changed to Step.route_context, and the value OutsideOnVenue is now always Outside.

  • All steps from an external directions provider will have routeContext set to Outside.

  • The route results (and the legs) now includes a geometry object that contains a GeoJSON LineString for the route or leg.

Directions renderer

  • DirectionsRenderer class must now be accessed under the directions namespace, i.e. mapsindoors.directions.DirectionsRenderer.

  • DirectionsRenderer no longer requires the map as a constructor parameter.


  • MapsIndoors.setMap() is removed.

  • DirectionsRenderer.getMap() is removed.

  • \

Last updated