Table of Contents

Использование сервиса Mega Landmark

В этой статье объясняется, как использовать службу позиционирования Mega Landmark после интеграции плагина Mega в WeChat Mini Program.

Перед началом

Включение Mega Landmark

Сначала создайте MegaTrackerConfigs, используя Landmark в качестве apiType.

Затем создайте SessionConfigs с помощью MegaTrackerConfigs и licenseKey из конфигурации.

Наконец, создайте сессию с помощью метода createSession(sessionConfigs) компонента EasyARMegaComponent, прикрепленного к сцене xr-frame.

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 внутри.

Его функция — фильтрация наиболее подходящей локационной базы Mega через SpotId или данные GNSS при использовании сервиса Landmark.

Методы фильтрации можно вызывать только после успешного запуска start(options).

Когда MegaTracker использует сервис Landmark без успешной фильтрации, статус локализации всегда остается MissingSpotVersionId

  • Сопоставление локационной базы с помощью предоставленного SpotID:

Используйте метод filterBySpotId(spotId) для Landmark, чтобы сопоставить локационную базу по 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:

Используйте метод filterByLocation() для Landmark, чтобы сопоставить локационную базу с использованием текущих данных 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}`)
    }
}