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

项目场景:

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();