# V3

### \[3.12.1] - 2020-10-06[​](https://docs.mapsindoors.com/changelogs/web/#3121---2020-10-06) <a href="#id-3121---2020-10-06" id="id-3121---2020-10-06"></a>

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

* The search algorithm in MICommon has been updated so a partial match on the start of a word would be ranked higher.

### \[3.12.0] - 2020-08-18[​](https://docs.mapsindoors.com/changelogs/web/#3120---2020-08-18) <a href="#id-3120---2020-08-18" id="id-3120---2020-08-18"></a>

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

* Locations for Venues, Buildings, and Floors is now included in the results from LocationsService.getLocations().
* getFieldForKey on Locations objects for getting data for custom property with key, disregarding casing of key.

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

* Filtering locations using categories in LocationsService.getLocations().
* Filtering locations using venue or building had no effect in LocationsService.getLocations().
* Sometimes querying using the take parameter would return fewer results than expected.

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

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

* Added support for [OpenID Connect](https://openid.net/connect/) authentication flow.

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

* Fixed issue where the SDK would throw an error if locations were requested before data had been loaded.

### \[3.10.0] - 2020-06-11[​](https://docs.mapsindoors.com/changelogs/web/#3100---2020-06-11) <a href="#id-3100---2020-06-11" id="id-3100---2020-06-11"></a>

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

* Added option to DirectionsRenderer to control if the map's viewport will be fitted to the bounds of the rendered route.

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

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

* This release is build on MICommon

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

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

* Inaccessible localStorage in the browser will no longer crash the SDK.

### \[3.8.0] - 2020-03-02[​](https://docs.mapsindoors.com/changelogs/web/#380---2020-03-02) <a href="#id-380---2020-03-02" id="id-380---2020-03-02"></a>

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

* Added externalId property on location properties object. roomId is now deprecated.

### \[3.7.1] - 2020-02-06[​](https://docs.mapsindoors.com/changelogs/web/#371---2020-02-06) <a href="#id-371---2020-02-06" id="id-371---2020-02-06"></a>

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

* PositionControl no longer regards saved position permission as invoked by clicking on the position control.

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

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

* PositionControl to show device position on the map.

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

* Error response body is now relayed correctly.

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

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

* ShareService.directionsToPhone now requires country code to be provided seperately.

### \[3.5.1] - 2019-12-19[​](https://docs.mapsindoors.com/changelogs/web/#351---2019-12-19) <a href="#id-351---2019-12-19" id="id-351---2019-12-19"></a>

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

* Changed the locations service to utilize the new backend apis new url structure.

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

* Fixed a bug where VenuesService.getBuildings calls for solutions/venues with no buildings caused rejection.

### \[3.5.0] - 2019-12-17[​](https://docs.mapsindoors.com/changelogs/web/#350---2019-12-17) <a href="#id-350---2019-12-17" id="id-350---2019-12-17"></a>

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

* Share service with function to send route directions via text message to phone.

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

* Fixed a bug where user roles were not passed along to distance matrix call.
* Fixed bug where getBuilding returned undefined until the map had been moved.

### \[3.4.1] - 2019-10-30[​](https://docs.mapsindoors.com/changelogs/web/#341---2019-10-30) <a href="#id-341---2019-10-30" id="id-341---2019-10-30"></a>

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

* Client side caching. Most request are now beeing cached in the browser.
* Added support for separate visibility control of label and icon

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

* The DirectionsService will now return a route object with the status "ZERO\_RESULTS" if no route could be calculated. Before it unintentional threw an error.
* Fixed a bug where the imageURL property on locations sometimes would be named imageurl.

### \[3.4.0] - 2019-08-28[​](https://docs.mapsindoors.com/changelogs/web/#340---2019-08-28) <a href="#id-340---2019-08-28" id="id-340---2019-08-28"></a>

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

* Floor calculation when building comes into focus according to agreed upon strategy, including respecting default floor of a building.
* The filter method now respects the fitView boolean also when clearing filter.

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

* Make sure selected/highlighted floor is always visible (no need to scroll) when focusing building.

### \[3.3.2] - 2019-08-15[​](https://docs.mapsindoors.com/changelogs/web/#332---2019-08-15) <a href="#id-332---2019-08-15" id="id-332---2019-08-15"></a>

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

* App config cache is now based on solution to avoid misconfiguration when switching solution.

### \[3.3.1] - 2019-07-31[​](https://docs.mapsindoors.com/changelogs/web/#331---2019-07-31) <a href="#id-331---2019-07-31" id="id-331---2019-07-31"></a>

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

* No longer assume that location `imageURL` always is received in lowercase from the backend.

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

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

* `SolutionsService.getUserRoles()` gets a list of user roles that can be used for filtering the directions result. This prevents routes from going through restriced areas.

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

* userRoles parameter added to DirectionsService.getRoute() for filtering the directions result. The userRoles paramter takes a array of user role ids.
* Directions to a venue can now make directions via a parking lot when driving or bicycling.

### \[3.2.3] - 2019-06-27[​](https://docs.mapsindoors.com/changelogs/web/#323---2019-06-27) <a href="#id-323---2019-06-27" id="id-323---2019-06-27"></a>

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

* Fixed a bug in `mapsindoors.DirectionsRenderer`. When `setRoute(null)` was called to remove the route from map it would throw an error.
* Fixed the "Cannot read property 'toJSON()' of null" error caused by looking for buildings in view before the map has a bounding box.

### \[3.2.2] - 2019-06-24[​](https://docs.mapsindoors.com/changelogs/web/#322---2019-06-24) <a href="#id-322---2019-06-24" id="id-322---2019-06-24"></a>

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

* Fixed build toolchain to prevent IE11 crash.

### \[3.2.1] - 2019-05-24[​](https://docs.mapsindoors.com/changelogs/web/#321---2019-05-24) <a href="#id-321---2019-05-24" id="id-321---2019-05-24"></a>

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

* Added the ability to change the api key at runtime via `mapsindoors.MapsIndoors.setApiKey(key);`
* Added the functions to get and set the language at runtime:
  * `mapsindoors.MapsIndoors.setLanguage(language);`
  * `mapsindoors.MapsIndoors.getLanguage();`

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

* The SDK now selects the fastest backend server based on a latency test.
* A list of known backends is stored in localStorage for the SDK to choose from. The list of known backends are updated automatically as part of the latency test.

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

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

* Fixed a crash caused by setting mapStyle via the MapsIndoors constructor.

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

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

* It's now posible to set a displayRule for a list of location ids or types. `myMapsIndoors.setDisplayRule(["abc", "cde", "fgh"], { visible: false });`

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

* Added the functions setMapStyle, getMapStyle and getMapStyles to MapsIndoors.
  * setMapStyle() set a new indoor map style.
  * getMapStyle() get the current style of the indoors map.
  * getMapStyles() get a list of availeble indoor map styles.

### \[3.0.5] - 2019-02-27[​](https://docs.mapsindoors.com/changelogs/web/#305---2019-02-27) <a href="#id-305---2019-02-27" id="id-305---2019-02-27"></a>

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

* Optimized map performance by reducing the amount POIs

### \[3.0.2] - 2019-02-19[​](https://docs.mapsindoors.com/changelogs/web/#302---2019-02-19) <a href="#id-302---2019-02-19" id="id-302---2019-02-19"></a>

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

* Support for IE 11

### \[3.0.0] - 2018-10-23[​](https://docs.mapsindoors.com/changelogs/web/#300---2018-10-23) <a href="#id-300---2018-10-23" id="id-300---2018-10-23"></a>

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

* Script must now be loaded with apikey parameter instead of solutionId, e.g. `https://app.mapsindoors.com/mapsindoors/js/sdk/mapsindoors-3.0.0-rc0.js?apikey=57e4e4992e74800ef8b69718`
* All services are now shared instances, so they cannot be newed. E.g. you must rewrite `let directionsService = new mapsindoors.DirectionsService();` to `let miDirectionsService = mapsindoors.DirectionsService;`
* Location click events for a MapsIndoors instance are now subscribable with the event name `click` instead of `location_click`, e.g. `google.maps.event.addListener(myMapsIndoors, 'click', (poi) => { console.log(poi.id); });`
* `DirectionService.route()` has been renamed to `DirectionService.getRoute()`.
* `DirectionRenderer.setDirections()` has been renamed to `DirectionRenderer.setRoute()`.
* `DirectionService.getRoute()` request parameter `travelMode` has been renamed to `mode`.
* `DirectionRenderer.setDirections()` now only accepts a single route instead of a route result, e.g. `DirectionRenderer.setRoute(myRouteResult.routes[0])`.
* To highlight locations on a map through a `MapsIndoors` instance, instead of providing a query object to `MapsIndoors.find()`, you must now pass a list of `locationId`'s to `MapsIndoors.filter()`.

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

* Removed `MapsIndoors.find()`, use `MapsIndoors.filter()` instead
* Removed `MapsIndoors.locate()`, use `MapsIndoors.filter()` instead

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

* Icons for single Locations can now be updated independantly, by referencing the location id. E.g. `myMapsIndoors.setDisplayRule('some-location-id', { icon: { url: 'https://icon.url' } });`

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

* Fixed a rendering bug that was causing MapsIndoors' map markers to occasionally disappear


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mapsindoors.com/other/changelog/web-sdk/v3.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
