Table of Contents

使用 Mega Landmark 服務

這篇文章介紹了在微信小程序 Mega 插件接入後,如何使用 Mega Landmark 的定位服務。

開始之前

啟用 Mega Landmark

首先使用 Landmark 作為 apiType 創建 MegaTrackerConfigs

然後使用 MegaTrackerConfigs 和配置中的 licenseKey 創建 SessionConfigs

最終用 xr-frame 場景中掛載的 EasyARMegaComponentcreateSession(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 匹配定位庫

使用 LandmarkfilterBySpotId(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 數據匹配定位庫

使用 LandmarkfilterByLocation() 方法通過使用當前的 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}`)
    }
}