共用方式為


如何在 Swift 中使用粗略重新定位建立和尋找錨點

Azure 空間錨點可以將裝置上、定位感應器資料與您建立的錨點建立關聯。 此資料也可以用來快速判斷您的裝置附近是否有任何錨點。 如需詳細資訊,請參閱粗略重新定位

必要條件

若要完成本指南,請確定您:

設定感應器指紋提供者

首先,我們會建立及設定感應器指紋提供者。 感應器指紋提供者會負責讀取您裝置上的平台特定感應器,並將其讀數轉換為雲端空間錨點工作階段所取用的常見表示法。

重要

請務必在這裡檢查 您啟用的感應器是否可在您的平臺上使用。

// Create the sensor fingerprint provider
var sensorProvider: ASAPlatformLocationProvider?
sensorProvider = ASAPlatformLocationProvider()

// Allow GPS
let sensors = locationProvider?.sensors
sensors.geoLocationEnabled = true

// Allow WiFi scanning
sensors.wifiEnabled = true

// Populate the set of known BLE beacons' UUIDs
let uuids = [String]()
uuids.append("22e38f1a-c1b3-452b-b5ce-fdb0f39535c1")
uuids.append("a63819b9-8b7b-436d-88ec-ea5d8db2acb0")

// Allow the set of known BLE beacons
sensors.bluetoothEnabled = true
sensors.knownBeaconProximityUuids = uuids

設定雲端空間錨點工作階段

接下來,我們將會負責設定雲端空間錨點工作階段。 在第一行中,我們會在工作階段上設定感應器提供者。 從現在開始,我們在工作階段期間建立的任何錨點都會與一組感應器讀數相關聯。 接下來,我們會將接近裝置的尋找準則具現化,並將其初始化以符合應用程式需求。 最後,我們會藉由從接近裝置的準則建立監看員,指示工作階段在尋找錨點時使用感應器資料。

// Set the session's sensor fingerprint provider
cloudSpatialAnchorSession!.locationProvider = sensorProvider

// Configure the near-device criteria
let nearDeviceCriteria = ASANearDeviceCriteria()!
nearDeviceCriteria.distanceInMeters = 5.0
nearDeviceCriteria.maxResultCount = 25

// Set the session's locate criteria
let anchorLocateCriteria = ASAAnchorLocateCriteria()!
anchorLocateCriteria.nearDevice = nearDeviceCriteria
cloudSpatialAnchorSession!.createWatcher(anchorLocateCriteria)

監看員建立後,系統會針對每個要求的錨點引發 AnchorLocated 事件。 在找到錨點時,或找不到錨點時,都會引發此事件。 如果發生這種情況,將會在狀態中指出原因。 在處理完監看員的所有錨點後 (包括找到和找不到的),就會引發 LocateAnchorsCompleted 事件。 每個監看員有 35 個識別碼的限制。

下一步

在本指南中,您已了解如何使用裝置上感應器來建立和尋找錨點。 若要深入了解粗略重新定位,請繼續進行下一個指南。