您的位置:首页 > Web前端 > JavaScript

ArcGIS API for JavaScript的服务查询

2017-10-19 09:18 211 查看

前言

地图查询是地图交互中常用的一个功能,这里说的地图查询包括关键字查询和空间查询。那对于咱们开发者来说,在使用ArcGIS API for JavaScript来进行WebGIS地图应用开发的时候,如何正确使用对应的接口进行开发是重要的基础。这篇文章是好友【无情女孩】的"第一篇"手稿,有幸在本博发布~。内容虽然简单,但逻辑和关键点都很清晰,欢迎拍砖!!!

正文

对于对rest服务(ArcGIS发布的Map Server,除了REST还有SOAP,API用的是REST)的查询,有三个方式可以进行查询,但是针对不同的查询需求,使用的类也是不同的,每种使用的方式如下

查询rest服务,并且rest服务下有多个图层,而且每个图层的字段是不同的,这时候我们需要用类FindTask和FindParameters。
伪代码如下:
require([
"esri/tasks/FindTask", "esri/tasks/FindParameters", "dojo/dom", ...

], function(FindTask, FindParameters, dom, ... ) {
var find = new FindTask("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer/");
var params = new FindParameters();
params.layerIds = [2];
params.searchFields = ["STATE_NAME","STATE_FIPS"];
params.searchText = dom.byId("searchText").value;
find.execute(params, showResults);
...
});
具体的参数,请参照API
官网的例子请访问如下链接:
https://developers.arcgis.com/javascript/3/jssamples/find_nomap.html

查询rest服务下的某个图层,某个字段值是什么的时候,可以使用的类是query和QueryTask,它的弊端是不能进行多图层的查询,优势是可以进行数据库的where条件来进行查询
伪代码如下:
require([
"esri/tasks/query", "esri/tasks/QueryTask", ...

], function(Query, QueryTask, ... ) {
var query = new Query();
var queryTask = new QueryTask( ... );
query.where = "STATE_NAME = 'Washington'";
query.outSpatialReference = {wkid:102100};

query.returnGeometry = true;
query.outFields = ["CITY_NAME"];
queryTask.execute(query, addPointsToMap);
...
});
具体的参数,请参照API
官网的例子访问如下链接: https://developers.arcgis.com/javascript/3/jssamples/query_multiresults.html
通过定义几何信息对rest服务的多个图层进行查询,这时候需要的类是IdentifyTask和IdentifyParameters进行查询。
伪代码如下:
require([
"esri/tasks/IdentifyTask","esri/tasks/IdentifyParameters", ...

], function(IdentifyTask,IdentifyParameters, ... ) {
var identify = new IdentifyTask("http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer");
var identifyParams = new IdentifyParameters();
identifyParams.geometry = geometry;
identifyParams.mapExtent = map.extent;
identify.execute(identifyParams);
});
具体的参数,请参照API
官网的例子访问如下链接:

https://developers.arcgis.com/javascript/3/jssamples/find_popup.html

这是我开发一段时间,对于rest的查询进行的总结,如果有说的不恰当或者有更了解的朋友,我们可以进行相互交流。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐