使用 Mega Landmark 服务
这篇文章介绍了在微信小程序 Mega 插件接入后,如何使用 Mega Landmark 的定位服务。
开始之前
- 获取和使用 APIKey(必须包括Mega Landmark)。
- 了解 MegaTracker 的概念与工作流。
- 了解 MegaTracker 云服务鉴权。
启用 Mega Landmark
首先使用 Landmark 作为 apiType 创建 MegaTrackerConfigs。
然后使用 MegaTrackerConfigs 和配置中的 licenseKey 创建 SessionConfigs。
最终用 xr-frame 场景中挂载的 EasyARMegaComponent 的 createSession(sessionConfigs) 方法创建 session。
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。
它的功能是 MegaTracker 在使用 Landmark 服务时通过 SpotId 或 GNSS 数据筛选当前最合适的 Mega 定位库。
筛选接口只能在 start(options) 成功后调用。
当 MegaTracker 使用 Landmark 服务而没有筛选成功时,定位状态始终为 MissingSpotVersionId
- 使用提供的 SpotID 匹配定位库:
使用 Landmark 的 filterBySpotId(spotId) 方法通过 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 数据匹配定位库:
使用 Landmark 的 filterByLocation() 方法通过使用当前的 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}`)
}
}