Mega Landmark サービスの使用
この記事では、WeChat Mini Program の 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 を自動的にインスタンス化します。
その機能は、Landmark サービスを使用するときに、SpotId または GNSS データによって現在最適な Mega ローカライズマップライブラリを MegaTracker がフィルタリングすることです。
フィルタリング API は、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}`)
}
}