我对使用Esri的ArcGIS API相当陌生,我目前正在尝试为Dynamics 365 / CRM构建集成。现在我遇到了一个问题,因为每次渲染地图时我都需要动态加载不同的模块。
实际加载模块不是问题,问题是来自require
方法的回调方法的参数,因为我无法动态地将每个模块插入到脚本中。
我通过循环遍历参数并根据declaredClass
参数将每个参数分配给变量来解决此问题。例如:
var Map, MapView, SceneView, Search;
for (var i = 0; i < arguments.length; i++) {
var arg = arguments[i];
var obj = arg();
if (obj.declaredClass == "esri.Map") {
Map = obj;
} else if (obj.declaredClass == "esri.views.MapView") {
MapView = obj;
} else if (obj.declaredClass == "esri.views.SceneView") {
SceneView = obj;
} else if (obj.declaredClass == "esri.widgets.Search") {
Search = obj;
}
}
这似乎有效,但我注意到我无法创建这些对象的新实例。相反,我只是在控制台中收到以下错误:
未捕获的TypeError:搜索不是构造函数
但是,我可以使用该对象并为其指定值来渲染地图,而无需初始化它的新实例。
任何人都可以通过这种方式告诉我,如果我做错了,或者是否有更好的方法来动态获取这些参数?