Added visible property to BlueDotOptions, AccuracyRing, and Heading to control the visibility of Blue Dot components independently
Added AutoZoomThresholds enum (.disabled, .enabled, .enabledWith(options:)) to DynamicFocusOptions and DynamicFocusState for configuring DynamicFocus auto-zoom behavior
let options = DynamicFocusOptions(
autoZoomThresholds: .enabledWith(options: .init(debug: true))
)
Added .floorStack(FloorStack) case to the FocusTarget enum, with convenience focusOn and getFocusOnTransform overloads on Camera for focusing on a FloorStack
mapView.camera.focusOn(.floorStack(floorStack))
Added Events.cameraScreenOffsetsChange event to listen for camera screen offset changes
Added .pixels(String) case to Width for pixel-based width values (e.g. "20px")
Added Navigation.trackCoordinate method for path tethering and travelled-path tracking, with TetheredOptions, TravelledOptions, TrackCoordinateOptions, TrackCoordinateResult, TrackingMode, CoordinateOutsideThresholdMode, and OutsideThresholdPathStyle models
let handle = mapView.navigation.trackCoordinate(
origin: startCoordinate,
destinations: [destinationSpace],
options: TrackCoordinateOptions(
mode: .tethered,
tethered: TetheredOptions(
outsideThresholdMode: .smoothTransition,
outsideThresholdDistance: 5.0
)
)
) { result in /* ... */ }
mapView.blueDot.on(.dotPositionUpdate) { payload in
handle?.update(coordinate: payload.coordinate)
}
Added BlueDotEvents.dotPositionUpdate event that emits smoothed Coordinate updates suitable for feeding into Navigation.trackCoordinate
Added includeNonPublic property to GetDirectionsOptions to allow routing through non-public spaces and connections
Added interactive property to AddImageOptions and interactive/cursor properties to ImageState and ImageUpdateState. Image3DView is now exposed in ClickPayload and HoverPayloadimages and target
Deprecated
BlueDot.update() has been deprecated in favor of BlueDot.forcePosition() or BlueDot.reportPosition()
// Before (deprecated)
mapView.blueDot.update(
position: BlueDotPositionUpdate(
latitude: .value(lat),
longitude: .value(lng),
floorId: .id(floorId)
),
options: BlueDotUpdateOptions(animate: true)
) { _ in }
// After
mapView.blueDot.reportPosition(
options: ManualPositionOptions(
latitude: lat,
longitude: lng,
floorLevel: floorLevel,
confidence: 1.0
)
) { _ in }