1

我开发了一个统一应用程序,并且正在使用 azure 空间锚点。我发现无法删除检测到的 cloudAnchor。我试过这个:

    protected void OnCloudAnchorLocated(AnchorLocatedEventArgs args)
    {
        CloudSpatialAnchor nextCsa = args.Anchor;


        ...
        if (nextCsa != null)
        {
            Debug.Log("BEFORE DELETE");
            await CloudManager.DeleteAnchorAsync(nextCsa);
            Debug.Log("AFTER DELETE");
        }
    }

我在控制台中得到了这个:

用于 SpatialAnchor 的 StoreAndWatcherTrackedState::TryRemoveAsync:6b77de6e-d8ba-44ce-b7cc-1f1d09bcc7a5

而这个错误:

OnError - 指定的空间锚点已与不同的商店关联

所以我有三个问题:

1. 错误是什么意思?

2. 是否可以从 azure 中删除检测到的锚点?

3. 如果是,正确的做法是什么?

4

1 回答 1

2

我无法回答你的第一个问题。但是我给了你关于如何删除锚点的粗略想法。我曾经List<CloudSpatialAnchor>在本地保存定位的锚点。然后您可以创建一个按钮来删除所有定位的锚点。

void Start(){
    ...
    List<CloudSpatialAnchor> nextCsa = new List<CloudSpatialAnchor>();
    ...
}

protected void OnCloudAnchorLocated(AnchorLocatedEventArgs args)
{
    ...
    nextCsa.Add(args.Anchor);
    ...
}

public void DeleteAnchor(){
    foreach(CloudSpatialAnchor anchor in nextCsa){
          await this.CloudManager.DeleteAnchorAsync(anchor);
    } 
}

在此处输入图像描述

我希望这有帮助。

+++++++ 编辑 +++++++

我可能理解第一个问题的解决方案。您收到的错误可能与正在进行的 Event on Cloud Session相关联。您尝试在LocateAnchorsCompleted事件完成之前删除锚点。所以,我建议你完成定位锚点,然后使用

args.Watcher.Stop();

然后删除空间锚。

于 2019-08-28T14:30:18.320 回答