繁体   English   中英

(ESRI) ReferenceError: Locator is not defined - 即使它被包含在内

[英](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 更新更快,但每个类在页面顶部都有一个链接,用于切换到旧模块加载。 例如:

esri.tasks.Locator (AMD)

该页面顶部有一个链接,上面写着Legacy Module Require 点击它,你会得到这个:

esri.tasks.Locator (旧版)

该页面告诉您如何将 Locator 与传统加载一起使用,包括在调用构造函数时需要说esri.tasks.Locator而不仅仅是Locator

顺便说一句,如果可以的话,我建议您更改为 AMD 加载,特别是如果这是针对新项目的。 但是,如果您只是想让它工作,请将Locator更改为esri.tasks.Locator就可以了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM