Использование сервиса Mega Landmark
В этой статье объясняется, как использовать службу позиционирования Mega Landmark после интеграции плагина Mega в WeChat Mini Program.
Перед началом
- Получение и использование APIKey (должен включать Mega Landmark).
- Понимание концепции и рабочего процесса MegaTracker.
- Понимание авторизации облачного сервиса MegaTracker.
Включение 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}`)
}
}