Использование сервиса Mega Landmark
В этой статье описано, как использовать сервис локализации Mega Landmark после подключения плагина Mega для мини-программы WeChat.
Перед началом
- Получите и используйте APIKey (обязательно должен включать Mega Landmark).
- Изучите понятия и рабочий процесс MegaTracker.
- Изучите аутентификацию облачного сервиса MegaTracker.
Включение Mega Landmark
Сначала используйте Landmark как apiType, чтобы создать MegaTrackerConfigs.
Затем используйте MegaTrackerConfigs и licenseKey из конфигурации, чтобы создать SessionConfigs.
В конце используйте метод createSession(sessionConfigs) компонента EasyARMegaComponent, смонтированного в сцене xr-frame, чтобы создать 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 MegaTracker фильтровал наиболее подходящую библиотеку карт локализации Mega по SpotId или данным GNSS.
Интерфейсы фильтрации можно вызывать только после успешного выполнения 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}`)
}
}