ArcGIS地图中控件报错Tried to register widget with id==measurementDiv but that id is already registered

7 篇文章 0 订阅

项目场景:

ArcGIS JavaScript API 基于dojo框架,在dojo中,除了沿用Dom结点, dojo 还自定义了一类结点用“dojoType" 进行标识。dojo 称这些结点为widget。我们在向地图中添加一些控件时,这些控件其实就是widget.


问题描述:

这样在程序中有时候注册ID的时候,我们注册的widget,在第二次重复使用的时候,会出现如下错误:

Tried to register widget with id==“measurementDiv” but that id is already registered

修改前代码:

var measurement = new Measurement({
    map: map,
    defaultAreaUnit: Units.SQUARE_METERS,//测面积
    defaultLengthUnit: Units.METERS//测距离
}, dom.byId("measurementDiv"));
measurement.startup();

解决方案:

先把注册的销毁,然后再创建一个相同id的容器

修改后代码:

if(registry.byId("measurementDiv")){
    registry.byId("measurementDiv").destroy();
}
var measurement = new Measurement({
    map: map,
    defaultAreaUnit: Units.SQUARE_METERS,//测面积
    defaultLengthUnit: Units.METERS//测距离
}, dom.byId("measurementDiv"));
measurement.startup();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: ArcGIS Maps for Unity是一款可以在Unity引擎使用ArcGIS地图和地理信息的工具。报错CS8701通常是由于在Unity脚本存在类型转换或赋值不兼容的问题导致的。CS8701错误指示了可能存在的潜在错误。 CS8701错误通常会包含更详细的错误信息,例如:“Cannot convert X to Y via a built-in conversion. Consider adding an explicit conversion.” 或者 “Cannot assign X to Y. An explicit conversion exists (are you missing a cast?)” 在解决这个问题之前,我们需要仔细分析错误信息。首先,我们需要根据错误信息查找到具体的报错代码行。然后,我们需要检查相关的变量和数据类型,并确保它们之间是兼容的。 如果报错是关于类型转换的问题,我们可以尝试在代码添加显式的类型转换或者强制类型转换。这可以通过在代码使用适当的转换函数(如Convert.ToX,(X)Y)来实现。 另外,我们还可以检查赋值操作的数据类型是否一致。如果不一致,我们需要确保将数据从一种类型转换为另一种类型。这也可以使用适当的转换函数来实现。 最后,如果以上步骤不能解决问题,我们可以尝试搜索错误信息和报错行相关的社区讨论或官方文档。这有可能是某个特定版本的ArcGIS Maps for Unity存在的已知问题。 总之,CS8701错误是由于类型转换或赋值不兼容的问题导致的。我们可以通过显式类型转换或强制类型转换来解决这个问题,并且也可以查找相关的社区讨论或官方文档来获取更多帮助。 ### 回答2: ArcGIS Maps for Unity 是一个用于在 Unity 集成 ArcGIS 地图的工具。该工具提供了许多用于显示、查询和分析地理空间数据的功能。当在使用 ArcGIS Maps for Unity 进行地图集成时,有时会遇到报错 cs8701 的问题。 报错 cs8701 是 C# 编译器的一种常见错误,通常与隐式引用类型转换相关。在 Unity 使用 ArcGIS Maps for Unity 进行地图集成时,这种错误通常是由于代码的某些数据类型不匹配引起的。 要解决这个问题,可以尝试以下几种方法: 1. 检查代码的数据类型:仔细检查项目可能引发报错的代码,查看是否存在数据类型不匹配的情况。特别是在对地理空间数据进行操作的地方,确保所有的数据类型都是正确的。 2. 使用显式类型转换:如果报错是由于隐式类型转换引起的,可以尝试使用显式类型转换来解决。根据报错提示,找到相应的代码并进行必要的类型转换,确保数据类型匹配。 3. 更新 ArcGIS Maps for Unity:确保你使用的是最新版本的 ArcGIS Maps for Unity。较新的版本通常会修复一些已知的 bug 和错误,可能会解决报错问题。 4. 查找其他解决方案:在 ArcGIS Maps for Unity 的官方文档、论坛或社区,可能会找到其他用户遇到相同问题的解决办法。在这些资源寻找帮助可能会更有针对性。 总之,报错 cs8701 是在使用 ArcGIS Maps for Unity 进行地图集成时可能遇到的问题之一。通过仔细检查代码、使用显式类型转换、更新工具版本以及寻找其他解决方案,可以解决这个问题并继续使用 ArcGIS Maps for Unity 进行地图集成。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WKWKWKWKWKWKYM

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值