Skip to main content
Version: 6.0

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 - BlueDot support via MapView.blueDot extension with enable/disable/update/follow/getters and typed event subscriptions. Includes CoreLocation integration for native location and heading updates. New models include BlueDotState, BlueDotOptions, BlueDotUpdateOptions, FollowMode, and FollowCameraOptions

  • Added - MapView.dynamicFocus extension providing enable, disable, getState, updateState, and focus methods for Dynamic Focus functionality. Includes new models DynamicFocusOptions, DynamicFocusState, DynamicFocusMode, and DynamicFocusAnimationOptions

  • 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.searchTags property for accessing location search tags

  • Added - allFloors option to Query.nearest() to search across all floors instead of just the current floor

  • Added - images3D getter to PointOfInterest, Space, Area, and MapObject classes with new Image3DView model

  • 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.on method for subscribing to map data events. This enables listening for events such as language changes on the map data object. Use MapData.changeLanguage to change the current language and subscribe to changes using MapDataEvents.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.text3d property to access 3D text state for a floor

  • Added - LocationProfile.extra property to access additional profile data

  • Added - enterpriseLocation property to Space and MapObject, providing direct access to enterprise location data when available

  • Added - LocationProfile.logoImage property as a replacement for the deprecated logo property

  • Added - Strongly typed MapData.hydrateMapData options 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 MultiFloorViewOptions properties for customizing floor footprints in multi-floor view:

    • footprintColor - Sets the color of the floor footprint
    • footprintOpacity - Controls the opacity of the floor footprint
    • footprintOutline - Configures the outline appearance of the floor footprint
  • Changed - MultiFloorViewOptions.floorGap now supports both a numeric value or an auto setting for automatic gap calculation between floors

  • Fixed - Bridge serialization issue where FloorStack.geoJSON and 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.logo has been deprecated in favor of LocationProfile.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.preloadFloors option to preload floors.
  • Added -MultiFloorViewOptions.floorGap option to set the gap between floors.
  • Fixed - Show3DMapOptions.initialFloor should 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.getState and MapView.updateState should 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.