项目场景:
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();