V4
iOS Version Requirements
MapsIndoors iOS SDK v4 requires at least iOS 13 and Xcode 14. An upcoming release will change the minimum supported iOS version to 14.
[4.3.9] 2024-04-17
Added
Ability to disable the automatic selection of Buildings and/or Floors when moving the map around. Use
MPMapControl.buildingSelectionMode
andMPMapControl.floorSelectionMode
to control the behavior.Ability to toggle rendering of map features on and off. Use
MPMapControl.hiddenFeatures
to control what should be visible on your map.The MapsIndoors SDK now includes a Privacy Manifest as described by Apple in Upcoming third-party SDK requirements.
Each XCFramework in the MapsIndoors SDK is now signed so you can be sure it originates from MapsPeople.
Fixed
The
MPSelectionBehavior.zoomToFit
is now properly respected.The built-in Floor Selector would sometimes not update to show the correct floor. It does now.
Changed
Rendering order of 3D Extruded Walls (only Mapbox) has changed slightly so outlines from neighboring rooms do not show through the walls.
Updated to Mapbox 10.17.0.
[4.3.8] 2024-03-25
Fixed
Fixed issue with
locationsWith(externalIds:)
not reliably returning locations.Applying User Roles would not always be respected.
Changed
Changed tap behavior on rendered map features. Now only visible features are tappable, whereas before invisible geometries could be tapped.
[4.3.7] 2024-03-21
Fixed
Crash in
locationsWith(externalIds:)
removed.
[4.3.6] 2024-03-20
Fixed
Search with MPQuery now respects all properties again.
Plugged a number of major memory leaks.
[4.3.5] 2024-03-07
Changed
Updated to Mapbox 10.16.4
No longer depends on MapboxDirections Cocoapod.
Fixed
Significantly reduced risk of race conditions during SDK load, which would make MapsIndoors appear as not loading at all.
An issue where polygon geometries are not clickable under certain circumstances.
[4.3.4] 2024-03-05
Retracted due to build issues. Replaced by 4.3.5.
[4.3.3] 2024-02-23
Fixed
A Location would not be selectable if the icon is not visible.
Label behavior on Mapbox when there is no icon, and only a label (the label will center on the anchor point).
[4.3.2] 2024-02-14
Fixed
Issue where some polygons would not render, using Google Maps.
The
selectable
property on locations would not always be respected.
Added
locationSettings
property onMPLocation
,MPType
andMPSolutionConfig
.
[4.3.1] 2024-02-13
Fixed
Extended zoom for Mapbox is now properly applied.
Icons for some map solutions are now crisper.
Changed
The compass on Mapbox is no longer hidden by the SDK, so the app will have to do that.
Selection of locations now behaves as on Android and Web.
[4.3.0] 2024-02-02
Changed
Due to the introduction of the new
selected
display rule, there has been a behavior change in the default visualization of selected locations. The old behavior can be re-enabled byMPMapsIndoors.shared.solution?.config.newSelection = false
. Or the new selection display rule may be retrieved and altered usingMPMapsIndoors.shared.displayRuleFor(displayRuleType: .selection)
.
Added
Two new Display Rule Types:
highlight
andselected
. With these Display Rules it is possible to define how Locations should look when selected or highlighted.The
highlight
Display Rule contains a number ofbadge
properties that can be used to define the badge that will be shown when using this Display Rule.A new
MPHighlightBehavior
that determines how the result of applying a highlight should be displayed on the map.setHighlight(filter:behavior:)
andsetHighlight(locations:behavior:)
to highlight Locations on the map, making use of the newhighlight
Display Rule type.Support for two new types of labels: Text and Flat! (only Mapbox).
Added new
labelStyle
section to Display Rules where you can style (only Mapbox):labelType
: Label type displayed on the map, either Text or FlatlabelStyleTextSize
: Controls the size of the labellabelStyleTextColor
: Controls the color of the labellabelStyleTextOpacity
: Controls the opacity of the labellabelStyleHaloColor
: Controls the color of the halo effect around the labellabelStyleHaloWidth
: Width of the halo effect around the labellabelStyleHaloBlur
: Controls the blur effect of the halo effectlabelStyleBearing
: Only applicable when Flat Label type is selected. Controls bearing of the Flat Label
Selective Venue Loading. If your Solution contains many Venues it is now possible to only load a subset of Venues, using e.g.
load(apiKey:venueIds:)
, or changing the set of loaded Venues withvenuesToSync
,addVenuesToSync(venueIds:)
andremoveVenuesToSync(venueIds:)
.It is now possible to programmatically override the Display Rule for floors, buildings and venues, to show them with e.g. a colored polygon.
Fixed
MPDirectionsService.routingWith(query:)
no longer returns anil
-route, instead throwing an error.MPMapsIndoors.shared.locationsWith(externalIds:)
no longer returns an empty result if called immediately after loading MapsIndoors.
[4.2.14] 2024-01-31
Fixed
Fixed a bug that could lead to either no route or a crash when used from Flutter or React Native.
[4.2.13] 2023-12-19
Added
excludeWayTypes
added toMPDirectionsQuery
. This allows for excluding certainMPHighWay
types from a route query, to ensure the way type is not part of the returned route. This differs fromavoidWayTypes
, which discourages certain way types.
Fixed
Fixed case where the blue dot could be rendered below tiles, on Mapbox.
Fixed route start/end marker sizing.
[4.2.12] 2023-12-07
Fixed
Improved directions rendering camera behavior. The map view's safeAreaInsets are now respected when padding is applied, and camera movements are performed.
[4.2.11] 2023-12-06
Changed
Default logging level is changed to
info
fromerror
. This does not produce much more logging – it only allows the iOS SDK version to be output on startup.
Fixed
Fixed potential crash when (un)subscribing to Live Data topics.
Fixed issue where details about a route using transit did not show.
Fixed issue where some icons would be shown too large.
MPMapControlDelegate.didTap(coordinate:)
is now called with correct latitude and longitude for tapped point.The Directions Renderer no longer shows remains of the previous route leg.
[4.2.10] 2023-11-23
Fixed
Fixed potential race condition, which could result in missing tiles until the floor index is changed.
[4.2.9] 2023-11-22
Fixed
Fixed missing or slow loading 2D models, and improved general performance and stability of 2D models usage (most notably on Google Maps).
Fixed issue with missing or simplified route geometry.
Fixed potential race condition that would result in a map with MapsIndoors tiles, but otherwise no MapsIndoors content showing.
[4.2.8] 2023-11-10
Added
Property
mapsIndoorsZoom
added toMPMapControl
. This exposes the zoom level MapsIndoors is working with to resolve e.g.zoomFrom
andzoomTo
in Display Rules.Property
logLevel
added toMPLog
to allow changing the amount of logs from MapsIndoors. The default log level has been changed fromdebug
toerror
resulting in many fewer log messages from MapsIndoors.
Fixed
In rare cases Google Maps would show the default red markers instead of MapsIndoors icons for Locations. This is no longer the case.
Changed
When Locations with large and small areas are close together MapsIndoors now prioritizes the smaller Location when user tap the map.
MapsIndoors XCFrameworks are now built with Xcode 15.
[4.2.7] 2023-10-23
Fixed
Reduced the number of network calls leading to better performance in many cases.
MPDirectionsRenderer
now works actually fits the route according tofitMode
on Google Maps.The default floor selector would sometimes miss detecting a floor change. No more of that.
[4.2.6] 2023-10-09
Fixed
Map rendering with Mapbox is no longer crashing after short usage.
LiveData is now always active, even for visibly small areas.
Labels and icons no longer risk being shown overlapped on a Mapbox map.
2D and 3D Models are now visible when extruded walls are shown.
Routes between MapsIndoors Venues or from outside to inside a Venue can now be generated when using Mapbox.
Changed
setMapLabelFont
now has optional parameters with default values (only usable from Swift).Updated Mapbox version from 10.15.0 to 10.16.1.
[4.2.5] 2023-09-22
Added
Ability to render an entire floor geometry (only when data is available).
Property
showLegLabel
toMPDirectionsRenderer
.
Changed
The building outline styling is now controlled by a display rule configurable in the CMS - the default selected building outline has therefore changed from pink-ish to blue. If you have previously made steps to programmatically modify the building outline display rule in your application, your changes are still applied and respected.
Fixed
Issue where some positional LiveData updates would not be reflected, when using the convenient interface
enableLiveData(...)
onMPMapControl
.Crash happening when attempting to query a route with
try await MPMapsIndoors.shared.directionsService.routingWith(...)
from Swift.Small UI issue where the default floor selector's scoll bar could flash.
Issue with north aligned camera movement not always being respected.
[4.2.4] 2023-08-31
Added
Set user roles async/await with
MPMapsIndoors.shared.apply(userRoles: [MPUserRole])
Fixed
Building selection logic is now run when
MapControl
is instantiated - previously the camera would need to move to do this initiallyPositional LiveData POIs are now rendered when their LiveData provided position is inside the viewport, but their original position is outside the viewport
Blue dot rendering issue where it would rotate with the camera
Map padding issue with Google Maps
The optional callback function on
enableLiveData(domain: String, listener: ((MPLiveUpdate) -> Void)?)
is now invoked when updates of the subscribed domain are receivedPotentially incorrect routing instruction strings
Issue with Google Maps where two or more buildings may be highlighted simultaneously
Issue with Google Maps where default marker (red pin) may be shown on POIs
Issue with Google Maps where the
MPCameraViewFitMode
was not always respectedUpdated Mapbox version from 10.14.0 to 10.15.0
[4.2.2] 2023-08-09
Added
Routes between MapsIndoors venues now have descriptions in the currnet language.
DisplayRules now supports unlimited zoom levels. The feature will be available in the MapsIndoors CMS soon.
MPSelectionBehavior
now has thezoomToFit
property.
Fixed
Setting the
icon
property of a DisplayRule now works as expected.Fixed an issue with map items not showing immediately, only when map was moved slightly (Google Maps).
Fixed an issue that would cause MapsIndoors tiles to disappear when moving the map (Mapbox Maps).
The rendered route is now shown above polygons, e.g. for Locations (Google Maps).
Fixed an issue that could cause multiple buildings to have an outline (Google Maps).
The button at the end of a rendered route leg is now clickable.
2D Models will no longer be at risk of being obstructed by Location polygons (Mapbox Maps).
Corrected rendering of Live Data Occupancy badges.
[4.2.1] 2023-06-29
Fixed
Rendering related crash when using Mapbox
[4.2.0] 2023-06-29
Added
Support for 3D models on Mapbox (beta feature)
Fixed
Loading performance improved
Loading bug fixed where the SDK would fail to load if any url resource returned >400 http codes
Rendering issue with flashing polygons in Mapbox
Rendering issue with wrong polygon ordering in Mapbox
Building selection logic bug where it was undetermined which building in view was selected - it is now the center most building
Improved MapsIndoors POI rendering with Google Maps
Improved overall rendering performance with Mapbox
Upgraded Mapbox version to 10.14.0
Fixed missing “next leg”-behavior when tapping the end marker of a route leg
Fixed issue with wrong rendering of badged icons, when using the default LiveData handling
[4.1.4] 2023-06-23
Added
Support for external location data sources using
register()
has been restored.
[4.1.3] 2023-06-07
Fixed
The
haloWidth
parameter ofsetMapLabelFont()
now renders on Google Maps as well.The
polygonStrokeWidth
property of a DisplayRule is now being respected.The info window on Google Maps is shown at the correct position.
[4.1.2] 2023-06-01
Added
MPMapControlDelegate
has been enhanced to enable listening to camera movements.
Fixed
The
iconSize
property of a DisplayRule is now being respected, so icons show up with the intended size.MPCustomFloorSelector
has been rewired, allowing users to personalize the floor selection.Map padding is now available for Mapbox, allowing users to adjust the spacing around the map.
The background color and solid color of a rendered route can now be customized.
The halo effect on labels is now available for use, enhancing the visual appearance of labels.
MPMapControl.setFilter()
no longer crashes.
[4.1.1] 2023-05-23
Fixed
The MapsIndoorsMapbox Cocoapod now uses the correct version of Mapbox
[4.1.0] 2023-05-17
Added
Mapbox version now 10.13.1 which adds:
Extrusions of Walls and Rooms
Fixed
Multi-line label cut-off
Marker missing when selecting location
Clustering icon size fix
Mapbox 10.13.1 fixes some Layers glitching
Fixed some known bugs
[4.0.3] 2023-04-21
Added
MPMapControl.showInfoWindowOnClickedLocation to control if info windows should be shown when a Location is selected
Fixed
Icons are now respecting zoom levels in Display Rules
Labels are now respecting zoom levels in Display Rules inherited from the Location Type
MPMapControl.hideFloorSelector now actually hides the floor selector
[4.0.2] 2023-04-13
Fixed
A number of rendering issues have been corrected.
An issue that could prevent a route from being correctly created.
[4.0.1] 2023-04-05
Fixed
Fixed crash with Mapbox when panning around the map.
[4.0.0] 2023-03-31
Version 4 of the MapsIndoors SDK has changed significantly compared to version 3. There is a migration guide that describes the changes.
Added
Support for new map providers
MapsIndoors can now be used with the Mapbox v10 SDK.
goTo(entity:)
A new method for moving the camera to MapsIndoors locations, this new method goTo() can be used with any class that implements MPEntity, which includes but is not limited to MPLocation, MPFloor, and MPBuilding.
Solution Config
The 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 and clustering.
New Cocoapods
The main Cocoapod to use is either
MapsIndoorsGoogleMaps
orMapsIndoorsMapbox
depending on the map engine to use.Both of these Cocoapods are dependent on the
MapsIndoors
andMapsIndoorsCore
Cocoapods and will automatically include them.Most classes in
MapsIndoorsCore
are public but meant for communication between the core SDK and map platform specific code. These classes are not described in the reference docs. Refrain from using these classes unless you know what you are doing.
Changed
Initialisation of MapsIndoors
The interface to initiate the SDK is improved for smaller and safer implementations.
Initialise MapsIndoors with
MPMapsIndoors.shared.load(apiKey: "YOUR_MAPSINDOORS_API_KEY")
Initialization of MapControl
In order to support multiple map engines an
MPMapConfig
is needed.The
MPMapConfig
is then used to create a MapControl:let mapControl = MPMapsIndoors.createMapControl(mapConfig: mapConfig)
.
Display Rules
Display Rules have been reworked completely.
Display Rules are now reference based, thus any changes to a rule are instantaneous.
Display Rules can be reset with
reset()
. This will return the display rule to the state it has in the CMS.
The iOS SDK Reference Docs have been modernised and are now available at https://app.mapsindoors.com/mapsindoors/reference/ios/v4-doc/documentation/mapsindoors/
Many interface changes. See migration guide for help in migrating from MapsIndoors SDK v3.
Minimum iOS version supported is iOS 13.
Required Xcode version is Xcode 14.
Last updated