IdentifyTask查询(附样例源码)

效果图

1. 空间查询触发事件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
query("button").on("click", function (event) {
map.graphics.clear();
var value = this.innerHTML;
switch (value) {
case "点": {
toolbar.activate(Draw.POINT, {
showTooltips: true
})
break;
}
case "线": {
toolbar.activate(Draw.POLYLINE, {
showTooltips: true
})
break;
}
case "面": {
toolbar.activate(Draw.POLYGON, {
showTooltips: true
})
break;
}
case "X": {
toolbar.deactivate();
break;
}
}
})
2. 绘图事件
1
2
3
4
5
6
on(toolbar, "draw-complete", function (result) {
toolbar.deactivate();
var params = new IdentifyParameters();
params.geometry = result.geometry;
identifytask.execute(setParams(params), showIdentifyResult)
});
3. 设置参数
1
2
3
4
5
6
7
8
function setParams(params) {
params.returnGeometry = true;
params.tolerance = 3;
params.layerIds = [0, 1];
params.mapExtent = map.extent;
params.layerOption = IdentifyParameters.LAYER_OPTION_ALL;
return params;
}
4. 显示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function showIdentifyResult(res) {
console.log(res)
if (res.length <= 0) {
alert("未检测到")
} else {
var features = [];
for (var i = 0; i < res.length; i++) {
//此例中res[0]是建筑图层,res[1]是行政区图层
features[i] = res[i].feature;
features[i].setInfoTemplate(new InfoTemplate({ "title": "", "content": "${*}" }));
}
//设置弹出窗口,map有自带infoWindow属性
map.infoWindow.setFeatures(features);
map.infoWindow.show(enevt.mapPoint);
}
}

源码