您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn.

Azure 空间定位点中的定位点关系和路径查找

你可以根据定位点关系在一个空间中创建连接的定位点,然后提出下面这样的问题:

  • 附近是否存在定位点?
  • 它们有多远?

示例

下面这样的情况可以使用连接的定位点:

  • 工人在完成某个任务时需要访问工厂中的不同位置。 工厂在每个位置都有空间定位点。 可以通过 HoloLens 或某个移动应用引导工人从一个位置前往下一个位置。 应用首先会查询附近的空间定位点,然后将工人引导到下一个位置。 应用会直观地显示到下一个位置的大致方向和距离。

  • 博物馆在公开展览点创建空间定位点。 这些定位点一起构成了一个小时的博物馆基本公开展览点之旅。 在公开展览点,游客可以在其移动设备上打开博物馆的混合现实应用。 然后,游客可以将手机摄像头朝向周围,这样就会知道要观看的其他公开展览点的大致方向和距离。 当用户朝着某个公开展览点行进时,应用会更新大致方向和距离,引导用户前进。

设置路径查找

使用定位点之间的视线方向和距离来提供指导的应用使用的是“路径查找”。 路径查找不同于逐向导航。 在逐向导航中,应用会引导用户绕过墙壁,穿过门口以及各个楼层。 使用路径查找时,用户会获得有关目的地的大致方向提示。 但是,对空间的推理或了解也有助于用户通过结构导航到目的地。

若要构建路径查找体验,请首先为该体验准备一个空间,并开发一个与用户进行交互的应用。 下面是概念性步骤:

  1. 规划空间:确定空间内的哪些位置将成为路径查找体验的一部分。 在我们的方案中,可以由工厂主管或博物馆旅游协调员决定在路径查找体验中包括哪些位置。

  2. 连接定位点:访问所选位置来创建空间定位点。 你可以在最终用户应用的管理模式下或在一个完全不同的应用中执行此操作。 将每个定位点连接或关联到其他定位点。 服务会维护这些关系。

  3. 启动最终用户体验:用户运行应用来查找某个定位点,该定位点可能位于任何选定的位置。 你的总体设计应该确定用户可以进入体验的位置。

  4. 查找附近的定位点:在用户找到某个定位点后,应用可以请求附近的定位点。 此过程返回设备与这些定位点之间的位置情况。

  5. 引导用户:应用可以根据该位置情况(相对于每个定位点而言)提供有关该用户的大致方向和距离的指导。 例如,应用中的摄像头源可能会显示一个图标和箭头来表示每个潜在的目的地,如下图所示。

  6. 优化指导:当用户行走时,应用可以定期计算设备与目标定位点之间的新位置情况。 应用会继续优化帮助用户到达目的地的指导提示。

    有关应用如何显示路径查找指导的示例

连接定位点

若要构建路径查找体验,首先需要在所选位置中放置定位点。 在本部分,我们假定应用的管理员已经完成了此项工作。

在单个会话中连接定位点

若要连接定位点,请完成以下步骤:

  1. 走到第一个位置并使用 CloudSpatialAnchorSession 创建定位点 A。
  2. 走到第二个位置。 基础 MR/AR 平台会对移动进行跟踪。
  3. 使用同一个 CloudSpatialAnchorSession 创建定位点 B。 定位点 A 和 B 现在已连接起来。 空间定位点服务会维护此关系。
  4. 针对剩余的定位点继续执行该过程。

在多个会话中连接定位点

你可以通过多个会话连接空间定位点。 使用此方法,你可以一次创建并连接一些定位点,之后再创建并连接更多定位点。

若要通过多个会话连接定位点,请完成以下步骤:

  1. 应用在一个 CloudSpatialAnchorSession 中创建一些定位点(定位点 A 和 B)。
  2. 在另一个时间,应用使用新的 CloudSpatialAnchorSession 查找其中一个定位点(例如定位点 A)。
  3. 走到一个新的位置。 基础混合现实或增强现实平台会对移动进行跟踪。
  4. 使用同一个 CloudSpatialAnchorSession 创建定位点 C。 定位点 A、B、C 现在已连接起来。 空间定位点服务会维护此关系。

随着时间推移,你可以为更多定位点和更多会话继续执行此过程。

验证定位点连接

应用可以通过发出对附近定位点的查询来验证两个定位点是否已连接,你可以通过在 CloudSpatialAnchorWatcher 上设置 NearAnchorCriteria 来实现这一点。 当查询结果包含目标定位点时,定位点连接得以验证。 如果定位点未连接,应用可以尝试再次连接它们。

下面是定位点可能无法连接的一些原因:

  • 在连接定位点的过程中,基础混合现实或增强现实平台失去了跟踪。
  • 由于在与空间定位点服务通信的过程中出现网络错误,定位点连接无法持久存在。

查找示例代码

若要查找展示如何连接定位点以及如何执行附近查询的示例代码,请参阅空间定位点示例应用