[英](ESRI) ReferenceError: Locator is not defined - Even though it is included
我不知为何会收到“未定义”错误。 我正在根据需要调用/包括依赖项。 下面是我正在使用的代码:
dojo.require("esri.map");
dojo.require("esri.tasks.locator");
dojo.require("esri.dijit.Geocoder");
.
.
.
var locator;
.
.
.
// this line is throwing error
locator = new Locator("http://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer");
在浏览器控制台中,将显示以下消息:
ReferenceError: Locator is not defined
为什么会发生这种情况?
简短回答:使用完整的模块名称:
locator = new esri.tasks.Locator("http://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer");
长答案:
您正在使用 Dojo 的旧同步模块加载 ( dojo.require
) 而不是较新的异步模块定义 (AMD)加载 ( require
)。 当您使用遗留加载时,您必须在使用类时提供完整的模块名称。
默认情况下,ArcGIS API for JavaScript 文档显示 AMD 文档,因为 AMD 更新更快,但每个类在页面顶部都有一个链接,用于切换到旧模块加载。 例如:
该页面顶部有一个链接,上面写着Legacy Module Require
。 点击它,你会得到这个:
该页面告诉您如何将 Locator 与传统加载一起使用,包括在调用构造函数时需要说esri.tasks.Locator
而不仅仅是Locator
。
顺便说一句,如果可以的话,我建议您更改为 AMD 加载,特别是如果这是针对新项目的。 但是,如果您只是想让它工作,请将Locator
更改为esri.tasks.Locator
就可以了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.