Usar o serviço Mega Landmark
Este artigo introduz como usar o serviço de localização Mega Landmark após integrar o plugin Mega em miniprogramas WeChat.
Antes de começar
- Obter e usar APIKey (deve incluir Mega Landmark).
- Entender conceitos e fluxo de trabalho do MegaTracker.
- Entender autenticação do serviço em nuvem MegaTracker.
Ativar Mega Landmark
Primeiro crie MegaTrackerConfigs usando Landmark como apiType.
Depois crie SessionConfigs usando MegaTrackerConfigs e a licenseKey da configuração.
Finalmente crie a sessão usando o método createSession(sessionConfigs) do componente EasyARMegaComponent montado na cena 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);
Como usar o LandmarkFilter
Quando criado com Landmark, o MegaTracker instancia automaticamente MegaLandmarkFilter internamente.
Sua função é filtrar o banco de dados de localização Mega mais adequado via SpotId ou dados GNSS quando o MegaTracker usa o serviço Landmark.
As interfaces de filtro só podem ser chamadas após start(options) ter sucesso.
Quando o MegaTracker usa o serviço Landmark sem filtragem bem-sucedida, o status de localização permanece sempre MissingSpotVersionId
- Corresponder banco de dados usando SpotID fornecido:
Use o método filterBySpotId(spotId) de Landmark para corresponder banco de dados via 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}`)
}
}
- Corresponder banco de dados usando dados GNSS atuais:
Use o método filterByLocation() de Landmark para corresponder banco de dados usando 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}`)
}
}