Usar el servicio Mega Landmark
Este artículo explica cómo utilizar el servicio de localización de Mega Landmark después de integrar el complemento Mega en Mini Programas de WeChat.
Antes de comenzar
- Obtener y usar APIKey (debe incluir Mega Landmark).
- Comprender los conceptos y flujo de trabajo de MegaTracker.
- Comprender la autenticación del servicio en la nube de MegaTracker.
Habilitar Mega Landmark
Primero, crea una MegaTrackerConfigs usando Landmark como apiType.
Luego, crea una SessionConfigs usando la MegaTrackerConfigs y la licenseKey de la configuración.
Finalmente, crea la sesión usando el método createSession(sessionConfigs) del componente EasyARMegaComponent montado en la escena de 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);
Cómo usar LandmarkFilter
Cuando se crea con Landmark, MegaTracker instancia automáticamente internamente un MegaLandmarkFilter.
Su función es filtrar la base de datos de localización Mega más adecuada actual mediante SpotId o datos GNSS cuando MegaTracker usa el servicio Landmark.
Las interfaces de filtro solo pueden llamarse después de que start(options) tenga éxito.
Cuando MegaTracker usa el servicio Landmark sin un filtrado exitoso, el estado de localización siempre será MissingSpotVersionId
- Emparejar la base de datos de localización usando un SpotID proporcionado:
Usa el método filterBySpotId(spotId) de Landmark para emparejar la base de datos mediante 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}`)
}
}
- Emparejar la base de datos de localización usando datos GNSS actuales:
Usa el método filterByLocation() de Landmark para emparejar la base de datos usando datos GNSS actuales:
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}`)
}
}