IdentifyTask查询(附样例源码)

103 阅读1分钟
效果图

1. 空间查询触发事件
			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. 绘图事件
				on(toolbar, "draw-complete", function (result) {
                    toolbar.deactivate();
                    var params = new IdentifyParameters();
                    params.geometry = result.geometry;
                    identifytask.execute(setParams(params), showIdentifyResult)
                });
3. 设置参数
				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. 显示
				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);
                    }
                }

源码