VpsLocalConfig

data class VpsLocalConfig(val minScanInterval: Duration = 1.seconds, val maxScanInterval: Duration = 10.seconds, val rescanDistanceMeters: Double = 4.0, val shortlistSize: Int = 200, val rerankSize: Int = 20, val dominanceRatio: Double = 2.0, val minInclinationAngle: Double = 65.0, val stepLengthMeters: Double = 0.8, val textureMaxLowTileRatio: Float = 0.4f, val minSharpness: Double = 10.0, val cameraAutoSwitchEnabled: Boolean = false)

Immutable configuration for com.getwemap.sdk.positioning.wemapvpslocal.VpsLocalLocationSource.

Pass an instance to the source's constructor; it is fixed for that source's lifetime. Every field has a default, so VpsLocalConfig() is the stock configuration. This mirrors the online VPS source's VpsConfig — there is no global mutable static config in this SDK.

The offline source has no mapData.extras overrides, so unlike VpsConfig none of these fields are nullable: the value you pass is the value used.

Constructors

Link copied to clipboard
constructor(minScanInterval: Duration = 1.seconds, maxScanInterval: Duration = 10.seconds, rescanDistanceMeters: Double = 4.0, shortlistSize: Int = 200, rerankSize: Int = 20, dominanceRatio: Double = 2.0, minInclinationAngle: Double = 65.0, stepLengthMeters: Double = 0.8, textureMaxLowTileRatio: Float = 0.4f, minSharpness: Double = 10.0, cameraAutoSwitchEnabled: Boolean = false)

Properties

Link copied to clipboard

Whether the source may automatically switch between the back and front cameras while scanning.

Link copied to clipboard

Cluster dominance ratio: the best cluster's score must exceed the runner-up's by this factor for a fix to be accepted. Higher = stricter (fewer, more confident fixes).

Link copied to clipboard

Maximum delay between scan attempts. Even when the user is stationary (so dead reckoning reports no drift), a scan fires at least this often to re-verify the fix.

Link copied to clipboard

Minimum device inclination (degrees) required to scan. Frames captured while the phone is tilted toward the floor/ceiling (inclination below this) are skipped, avoiding low-value queries. 90° = phone upright. Mirrors the online VPS source's foreground threshold.

Link copied to clipboard

Minimum time between the starts of two scan attempts — the fastest cadence and the loop's poll granularity. Scans do not fire more often than this even while walking quickly. See rescanDistanceMeters for how the effective cadence adapts to movement.

Link copied to clipboard

Minimum frame sharpness (variance of the image Laplacian) required to reach inference. Motion-blurred frames below this are skipped before the expensive BoQ step, since they rarely localize. Higher = stricter (demands sharper frames). 0.0 disables the gate.

Link copied to clipboard

Number of top candidates kept after cosine reranking.

Link copied to clipboard

Distance, in meters, that pedestrian dead reckoning may carry the position from the last accepted fix before a re-scan is triggered to re-anchor it. Lower = tighter correction (more scans while walking); higher = fewer scans but more accumulated drift between fixes. This is what makes the cadence movement-aware: a walking user re-scans sooner than a stationary one.

Link copied to clipboard

Number of keyframes kept by the Hamming shortlist before cosine reranking.

Link copied to clipboard

Assumed step length, in meters, used by pedestrian dead reckoning (PDR) to advance the position between discrete VPS fixes. Each detected step moves the position by this distance along the current VPS-anchored heading. Fixed stride (not adaptive); matches the online VPS source's value.

Link copied to clipboard

Maximum fraction of low-texture image tiles (0..1) a captured frame may contain and still be sent to inference. Frames above this — blank walls, floors, ceilings — are skipped before the expensive BoQ step, since they rarely localize. 1.0 disables the gate.