所以,我正在使用ArcGIS API(javascript)来从featurelayer中的对象获取一些信息。这里的第一步应该是检测用户点击的对象。我正在使用查询。但出于某种原因,我似乎无法执行我的查询。每次调用execute方法时,控制台都会回复“Object不支持属性或方法'execute'”。代码的相关部分如下:
thema_4_Verblijf = new FeatureLayer("https://services.arcgisonline.nl/arcgis/rest/services/Basisregistraties/BAG/MapServer/4");
map_Thema_4.addLayer(thema_4_Verblijf);
thema_4_Verblijf.on("click", thema_4_Verblijf_Click);
function thema_4_Verblijf_Click(evt){
var query = new Query();
query.returnGeometry = true;
query.outFields = ["*"];
query.geometry = evt.mapPoint;
var queryTask = new QueryTask("https://services.arcgisonline.nl/arcgis/rest/services/Basisregistraties/BAG/MapServer/4");
queryTask.execute(query,showResults);
};
function showResults(featureSet){
//will show results
}
起初,我认为这与我没有在脚本开头正确定义要求有关。这是不可能的,因为execute是QueryTask的一种方法,并且'new QueryTask'本身完成而没有任何错误。尽管如此,我定义的要求是:
require([...
"esri/geometry",
"esri/tasks/query",
"esri/tasks/QueryTask",
"esri/tasks/FeatureSet"
],
function startMap(
...
Query,
QueryTask,
...
关于这里可能出现什么问题的任何想法......?
答案 0 :(得分:0)
好的,所以这已经回答了。
我尝试使用遗留模块定义querytask,并且出于某种原因这样做有效。
var queryTask = new esri.tasks.QueryTask(...);
我之前在我目前的项目中遇到过这种情况,遗留的和AMD模块必须混在一起,即使我的所有需求都是使用AMD方式定义的。
所以是的,这个特殊的问题已得到解决(如:我可以继续),但如果有人能解释这两个模块如何混淆,那将是值得赞赏的。