ArcGIS api for javascript——查询没有地图的数据

描述

本例展示了用户能够从没有显示服务的地图服务查询数据。大部分地图服务包含属性信息的数据集,数据集能够被查询并显示在一个简单的列或表格里。 本例按提供的州名称查询USA人口普查数据,然后显示关于州的属性信息列表。

代码创建了一个QueryTask和一个用做任务输入的 Query。注意QueryTask的构造函数需要地图服务里的图层的URL(http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/5)。 在URL结尾的数字5是地图目录里的州图层的索引号。要找到你自己的地图服务的URL及它们的图层索引,使用Services Directory

注意query.returnGeometry被设置为false因为结果不需要被显示在地图上。outFields确定州图层中的那些字段被查到。

当单击“Get Details”按钮,execute函数被调用。查询任务在被查询的图层的主要显示字段里搜索query.text,在这个图层里面是STATE_NAME字段。这就是为什么query.text被设置在文本框里输入的州名。如果想要输入任意SQL where子句,可以使用query.where代替query.text。

查询指定的所有属性能作为参数传递给QueryTask,当查询完成时连同函数一起被调用。

queryTask.execute(query,showResults);

查询结果作为FeatureSet被传递给showResults函数。函数循环访问所有结果的属性并使用html为查询结果构建一个列表。然后这个HTML被写到"info" div中。

 1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
 2 
 3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/strict.dtd">
 4 <html>
 5   <head>
 6     <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
 7     <meta http-equiv="X-UA-Compatible" content="IE=7" />
 8    
 9     <title>Query State Info without Map</title>
10     
11     
12     <link rel="stylesheet" type="text/css" href="styles.css"
13           href="http://serverapi.arcgisonline.com/jsapi/arcgis/1.6/js/dojo/dijit/themes/tundra/tundra.css">
14     <script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=1.6"></script>
15     <script type="text/javascript" language="Javascript">
16         dojo.require("esri.map");
17         var queryTask,query;
18         function init(){
19             //生成查询
20             queryTask = new esri.tasks.QueryTask("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/5");
21             
22             //dojo.connect(queryTask,"onComplete",showResults);
23             
24             //建立查询过滤器
25             query = new esri.tasks.Query();
26             query.returnGeometry = false;//结果不显示在地图上
27             query.outFields =  ["SQMI","STATE_NAME","STATE_FIPS","SUB_REGION",
28         "STATE_ABBR","POP2000","POP2007","POP00_SQMI","POP07_SQMI",
29         "HOUSEHOLDS","MALES","FEMALES","WHITE","BLACK","AMERI_ES","ASIAN",
30         "OTHER","HISPANIC","AGE_UNDER5","AGE_5_17","AGE_18_21","AGE_22_29",
31         "AGE_30_39","AGE_40_49","AGE_50_64","AGE_65_UP"];
32         }
33         
34         function execute(stateName){
35             query.text = stateName;
36             //执行查询
37             queryTask.execute(query,showResults);
38         }
39         
40         function showResults(results){
41             var s = "";
42             for(var i=0,il=results.features.length;i<il;i++){
43                 var featureAttributes = results.features[i].attributes;
44                 for(att in featureAttributes){
45                     s = s + "<b>" + att + ":</b>" + featureAttributes[att] + "<br>";
46                 }
47             }
48             dojo.byId("info").innerHTML = s;
49         }
50         
51         dojo.addOnLoad(init);
52     </script>
53   </head>
54   
55   <body>
56     US state name:<input type="text" id="stateName" value="California"/>
57     <input type="button" value="Get Details" onclick="execute(dojo.byId('stateName').value)"/>
58     <br>
59     <br>
60     <div id="info" style="padding:5px;margin:5px;background-color:#eee;"></div>
61   </body>
62 </html>
原文地址:https://www.cnblogs.com/xiaotian-222/p/6515038.html