Release Notes
Mappedin SDK for iOS release notes are posted here and this page will be kept up-to-date as updates are released.
6.2.0-beta.0 - February 2, 2026
-
Upgraded to Mappedin JS v6.13.0
-
Added -
BlueDotsupport viaMapView.blueDotextension with enable/disable/update/follow/getters and typed event subscriptions. Includes CoreLocation integration for native location and heading updates. New models includeBlueDotState,BlueDotOptions,BlueDotUpdateOptions,FollowMode, andFollowCameraOptions -
Added -
MapView.dynamicFocusextension providingenable,disable,getState,updateState, andfocusmethods for Dynamic Focus functionality. Includes new modelsDynamicFocusOptions,DynamicFocusState,DynamicFocusMode, andDynamicFocusAnimationOptions -
Added - Experimental
MapView.__EXPERIMENTAL__auto()method for automatic label and marker setup -
Added -
hydrateMapDataFromURL(url:options:)method for hydrating map data directly from a URL -
Added - Cache URL handling with
mappedin-cache://scheme and FileManager helper to build cache URLs -
Added - Support for loading maps from MVF filename for improved offline capabilities
-
Added -
LocationProfile.searchTagsproperty for accessing location search tags -
Added -
allFloorsoption toQuery.nearest()to search across all floors instead of just the current floor -
Added -
images3Dgetter toPointOfInterest,Space,Area, andMapObjectclasses with newImage3DViewmodel -
Improved - Map loading performance by optimizing how map data is passed to the WebView
6.2.0-alpha.3 - January 16, 2026
-
Upgraded to Mappedin JS v6.11.0
-
Added -
MapData.onmethod for subscribing to map data events. This enables listening for events such as language changes on the map data object. UseMapData.changeLanguageto change the current language and subscribe to changes usingMapDataEvents.languageChange
// Change the map language to Spanish
mapView.mapData.changeLanguage("es")
// Listen for language change events
mapView.mapData.on(MapDataEvents.languageChange) { payload in
if let language = payload {
print("Language changed to \(language.name) (\(language.code))")
}
}
-
Added -
FloorState.text3dproperty to access 3D text state for a floor -
Added -
LocationProfile.extraproperty to access additional profile data -
Added -
enterpriseLocationproperty toSpaceandMapObject, providing direct access to enterprise location data when available -
Added -
LocationProfile.logoImageproperty as a replacement for the deprecatedlogoproperty -
Added - Strongly typed
MapData.hydrateMapDataoptions parameter for better type safety when hydrating cached map data -
Added - Support for caching map data in binary format for improved offline performance
-
Added - Experimental support for Spaces that are open to below in multi-floor view. When enabled, floors will render with cutouts for Spaces like atriums that span multiple levels, creating a more realistic visualization. Enable this feature using
MultiFloorViewOptions.spacesOpenToBelowEnabled -
Added - New
MultiFloorViewOptionsproperties for customizing floor footprints in multi-floor view:footprintColor- Sets the color of the floor footprintfootprintOpacity- Controls the opacity of the floor footprintfootprintOutline- Configures the outline appearance of the floor footprint
-
Changed -
MultiFloorViewOptions.floorGapnow supports both a numeric value or anautosetting for automatic gap calculation between floors -
Fixed - Bridge serialization issue where
FloorStack.geoJSONand other complex GeoJSON properties were not being passed correctly over the native bridge. This resolves issues when accessing GeoJSON data from floor stacks and related objects -
Deprecated -
LocationProfile.logohas been deprecated in favor ofLocationProfile.logoImage
6.2.0-alpha.2 - January 8, 2026
- Upgraded to Mappedin JS v6.10.0
- Added - getDirections must also accept an array of NavigationTarget
- Added - Coordinate.geoJSON
- Fixed - mapView.updateState is not working on walls or doors
- Fixed - getDirectionsMultiDestination's to method should use NavigationTarget not Any
- Removed - Duplicated unused standalone classes of Point, LineString and MultiPolygon that are defined in Geometry
⚠️ Breaking Changes
- Changed - Clean up remaining generic types
- Changed - Strongly type .geoJSON properties
- Changed - Shapes.add should be strongly typed
// ❌ Before
// Get the GeoJSON from the area
guard let areaGeoJSON = area.geoJSON else { return }
// Create a FeatureCollection containing the Feature of the Area
var shapeFeatureCollection: [String: Any] = [
"type": "FeatureCollection",
"features": []
]
var feature: [String: Any] = [
"type": areaGeoJSON["type"] as? String ?? "Feature"
]
if let properties = areaGeoJSON["properties"] as? [String: Any] {
feature["properties"] = properties
}
if let geometry = areaGeoJSON["geometry"] as? [String: Any] {
feature["geometry"] = geometry
}
shapeFeatureCollection["features"] = [feature]
// Draw the shape
mapView.shapes.add(
geometry: shapeFeatureCollection,
style: PaintStyle(color: color, altitude: altitude, height: height, opacity: opacity)
) { _ in }
// ✅ After
// Get the GeoJSON Feature from the area
guard let feature = area.geoJSON else { return }
// Create a FeatureCollection containing the single Feature
let featureCollection = FeatureCollection(features: [feature])
// Draw the shape using the typed API
mapView.shapes.add(
geometry: featureCollection,
style: PaintStyle(color: color, altitude: altitude, height: height, opacity: opacity)
) { _ in }
6.2.0-alpha.1 - December 30, 2025
- Upgraded to Mappedin JS v6.9.1.
- Added -
Show3DMapOptions.preloadFloorsoption to preload floors. - Added -
MultiFloorViewOptions.floorGapoption to set the gap between floors. - Fixed -
Show3DMapOptions.initialFloorshould accept only a string.
⚠️ Breaking Changes
- Changed - Strongly type MapView.on parameters and return values
// ❌ Before
self.mapView.on("click") { [weak self] payload in
guard let self = self,
let clickPayload = payload as? ClickPayload,
}
// ❌ Before
self.mapView.on(Events.click) { [weak self] payload in
guard let self = self,
let clickPayload = payload as? ClickPayload,
}
// ✅ After
self.mapView.on(Events.click) { [weak self] clickPayload in
guard let self = self
}
6.1.0-alpha.1 - December 19, 2025
- Added - LabelAppearance.iconScale property to control the scale of the icon.
⚠️ Breaking Changes
- Fixed - Removed duplicate inline implementation of Interpolation and Width.
// ❌ Before
let opts = AddPathOptions(width: .fixed(1.0))
// ✅ After
let opts = AddPathOptions(width: .value(1.0))
- Fixed -
MapView.getStateandMapView.updateStateshould use data classes and not plain objects.
// ❌ Before
self.mapView.updateState(target: space, state: ["interactive": interactive]) { _ in }
// ✅ After
self.mapView.updateState(space: space, state: GeometryUpdateState(interactive: interactive))
6.0.0-alpha.0 - December 12, 2025
- Initial release of Mappedin SDK for iOS v6.