使用 Mega Landmark 服務
這篇文章介紹了在微信小程序 Mega 插件接入後,如何使用 Mega Landmark 的定位服務。
開始之前
- 獲取和使用 APIKey(必須包括Mega Landmark)。
- 了解 MegaTracker 的概念與工作流。
- 了解 MegaTracker 雲服務鑒權。
啟用 Mega Landmark
首先使用 Landmark 作為 apiType 創建 MegaTrackerConfigs。
然後使用 MegaTrackerConfigs 和配置中的 licenseKey 創建 SessionConfigs。
最終用 xr-frame 場景中掛載的 EasyARMegaComponent 的 createSession(sessionConfigs) 方法創建 session。
const megaTrackerConfigs: easyar.MegaTrackerConfigs = {
access: apiKeyAccess,
apiType: mega.MegaApiType.Landmark
};
const sessionConfigs: easyar.SessionConfigs = {
megaTrackerConfigs: megaTrackerConfigs,
licenseKey: settings.EasyARLicenseKey
};
session = megaComponent.createSession(sessionConfigs);
如何使用 LandmarkFilter
當使用 Landmark 創建時,MegaTracker 會自動內部實例化 MegaLandmarkFilter。
它的功能是 MegaTracker 在使用 Landmark 服務時通過 SpotId 或 GNSS 數據篩選當前最合適的 Mega 定位庫。
篩選接口只能在 start(options) 成功後調用。
當 MegaTracker 使用 Landmark 服務而沒有篩選成功時,定位狀態始終為 MissingSpotVersionId
- 使用提供的 SpotID 匹配定位庫:
使用 Landmark 的 filterBySpotId(spotId) 方法通過 SpotID 匹配定位庫:
async landmarkFilter() {
const res = await session.megaTracker.landmarkFilter.filterBySpotId(settings.LandmarkSpotId);
if (res.status != mega.MegaLandmarkFilterStatus.Found) {
console.error(`LandmarkFilter Failed, status: ${mega.MegaLandmarkFilterStatus[res.status]}, exceptionInfo : ${res.exceptionInfo}`)
}
}
- 使用當前的 GNSS 數據匹配定位庫:
使用 Landmark 的 filterByLocation() 方法通過使用當前的 GNSS 數據 匹配定位庫:
async landmarkFilter() {
const res = await session.megaTracker.landmarkFilter.filterByLocation();
if (res.status != mega.MegaLandmarkFilterStatus.Found) {
console.error(`LandmarkFilter Failed, status: ${mega.MegaLandmarkFilterStatus[res.status]}, exceptionInfo : ${res.exceptionInfo}`)
}
}