Usar o serviço Mega Landmark
Este artigo descreve como usar o serviço de localização Mega Landmark depois de integrar o plugin Mega do WeChat Mini Program.
Antes de começar
- Obtenha e use APIKey (deve incluir Mega Landmark).
- Conheça os conceitos e o fluxo de trabalho do MegaTracker.
- Conheça a autenticação do serviço em nuvem do MegaTracker.
Habilitar Mega Landmark
Primeiro, use Landmark como apiType para criar MegaTrackerConfigs.
Depois, use MegaTrackerConfigs e o licenseKey na configuração para criar SessionConfigs.
Por fim, use o método createSession(sessionConfigs) de EasyARMegaComponent montado na cena xr-frame para criar session.
const megaTrackerConfigs: easyar.MegaTrackerConfigs = {
access: apiKeyAccess,
apiType: mega.MegaApiType.Landmark
};
const sessionConfigs: easyar.SessionConfigs = {
megaTrackerConfigs: megaTrackerConfigs,
licenseKey: settings.EasyARLicenseKey
};
session = megaComponent.createSession(sessionConfigs);
Como usar LandmarkFilter
Quando criado usando Landmark, o MegaTracker instancia automaticamente MegaLandmarkFilter internamente.
Sua função é permitir que o MegaTracker filtre a biblioteca de mapas de localização Mega mais adequada por SpotId ou dados GNSS ao usar o serviço Landmark.
As APIs de filtragem só podem ser chamadas depois que start(options) for bem-sucedido.
Quando o MegaTracker usa o serviço Landmark e a filtragem não foi bem-sucedida, o status de localização é sempre MissingSpotVersionId
- Usar o SpotID fornecido para corresponder à biblioteca de mapas de localização:
Use o método filterBySpotId(spotId) de Landmark para corresponder à biblioteca de mapas de localização por 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}`)
}
}
- Usar os dados GNSS atuais para corresponder à biblioteca de mapas de localização:
Use o método filterByLocation() de Landmark para corresponder à biblioteca de mapas de localização usando os dados GNSS atuais:
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}`)
}
}