Table of Contents

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

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}`)
    }
}