arcgis api for JavaScript学习-查询QueryTask

it2025-10-17  9

QueryTask

QueryTask:用于属性查询和空间查询,可以进行简单统计,只能查询一个图层。思路: 创建需要的对象QueryTask、Query、渲染符号SimpleLineSymbol等。设置查询参数Query执行查询渲染查询结果 示例代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>QueryTask之属性查询</title> <style type="text/css"> .MapClass{ width:100%; height:600px; border:1px solid #000; position: relative; } #divShowResult { display: none; width: 200px; height: 100%; background-color: pink; position: absolute; bottom: 1px; right: 1px; z-index: 999; } </style> <link rel="stylesheet" type="text/css" href="http://localhost/arcgis_js_api/library/3.17/3.17/dijit/themes/tundra/tundra.css"/> <link rel="stylesheet" type="text/css" href="http://localhost/arcgis_js_api/library/3.17/3.17/esri/css/esri.css" /> <script type="text/Javascript" src="http://localhost/arcgis_js_api/library/3.17/3.17/init.js"></script> <script> require(["esri/map", "esri/layers/ArcGISDynamicMapServiceLayer", "dojo/dom", "dojo/on", "esri/tasks/QueryTask", "esri/tasks/query", "esri/symbols/SimpleLineSymbol", "esri/symbols/SimpleFillSymbol", "esri/graphic", "dojo/domReady!WebGIS/arcgisdemo/blog/查询功能-QueryTask属性查询"], function (Map, ArcGISDynamicMapServiceLayer,dom, on, QueryTask, Query, SimpleLineSymbol,SimpleFillSymbol,Graphic) { var map = new Map('mapDiv'); var layer = new ArcGISDynamicMapServiceLayer("http://localhost:6080/arcgis/rest/services/TestServer/MyMapService/MapServer"); map.addLayer(layer); //给button绑定事件 on(dom.byId('btn'), 'click', function (e) { //显示属性查询内容 document.getElementById("divShowResult").style.display = "block"; // 定义查询对象 var queryTask = new QueryTask("http://localhost:6080/arcgis/rest/services/TestServer/MyMapService/MapServer/3"); //定义查询参数对象 var query = new Query(); //查询条件,类似于sql语句的where子句 //注意where子句里面的字符串规定单引号'name="J4"'这个会报错 // query.where = "name='J4'";这样就能实现模糊查询和精确查询 query.where = "name = \'J4\'";//转义也可以但是语句里面必须是单引号 //返回的字段信息:*代表返回全部字段 query.outFields = ["*"]; //是否返回几何形状 query.returnGeometry = true; //执行属性查询 queryTask.execute(query, showQueryResult); }); //属性查询完成之后,用showQueryResult来处理返回的结果 function showQueryResult(queryResult) { //创建面符号进行默认渲染 var fill = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID, new SimpleLineSymbol(SimpleLineSymbol.STYLE_DASH, new dojo.Color([255, 0, 0]), 3)); if (queryResult.features.length === 0) { dom.byId('divShowResult').innerHTML = ""; return; } var htmls = ''; if (queryResult.features.length >= 1) { htmls += "<table style='width: 100%'>"; htmls += "<tr><td>名称</td></tr>"; for (var i = 0; i < queryResult.features.length; i++) { //获得图形graphic var graphic = queryResult.features[i]; //赋予相应的符号 graphic.setSymbol(fill); //添加到地图高亮显示 map.graphics.add(graphic); //获得教学楼名称(和sho属性表对应) var ptName = graphic.attributes['alias']; htmls += "<tr>"; htmls += "<td>" + ptName + "</td></tr>"; htmls += "</table>"; } //关闭属性表框 closeAttr = function () { map.graphics.clear(); document.getElementById("divShowResult").style.display = "none"; } dom.byId('divShowResult').innerHTML = htmls + "<button id='closeAttr' οnclick='closeAttr()'>关闭</button>"; } } }); </script> </head> <body> <div id="mapDiv" class="MapClass"> <div id="divShowResult"></div> </div> <input type="button" value="属性查询" id="btn"/> </body> </html>
最新回复(0)