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的查询进行的总结,如果有说的不恰当或者有更了解的朋友,我们可以进行相互交流。
相关文章推荐
- ArcGIS API For Javascript之调用动态地图服务+属性、空间查询
- ArcGIS API For Javascript GP工具 Printing Tools导出地图或者打印地图(一):GP 服务Printing Tools
- ArcGIS API for javascript开发笔记(四)——GP服务调用之GP模型的规范化制作详解
- (六)ArcGIS API For Javascript之查询功能
- ArcGIS API for JavaScript 4.2学习笔记[21] 对3D场景上的3D要素进行点击查询【Query类学习】
- ArcGIS api for javascript——用第二个服务的范围设置地图范围
- ArcGIS API for javascript开发笔记(四)——GP服务调用之GP模型的规范化制作详解
- ArcGIS.Server.9.3和ArcGIS API for JavaScript实现语句查询QueryTask(八)
- ArcGIS API For Javascript之地图基本加载与显示,地图切换、缩放、定位、比例尺、鹰眼图、坐标显示、查询搜索功能实现
- ArcGIS API for Javascript 使用缓冲区结果做query查询出现“esri.config.defaults.io.proxyUrl 尚未进行设置”错误
- ArcGIS api for javascript——查询,立刻打开信息窗口
- ArcGIS API For Javascript之多图层显示与隐藏,图层要素选框查询
- ArcGIS API For JavaScript 利用GP服务生成等值线、等值面(二)之生成等值面
- ArcGIS api for javascript——地理处理任务-服务区域任务
- (十七)ArcGIS API For Javascript之影像服务分析
- ArcGIS api for javascript——显示多个ArcGIS Online服务
- ArcGIS API for Javascript 使用query查询以某个点为半径的圆内的要素出现“esri.config.defaults.io.proxyUrl 尚未进行设置”错误
- (八)ArcGIS API For Javascript调用GP服务
- ArcGIS API for JavaScript开发笔记(二)GP服务REST调用
- ArcGIS api for javascript——查询,然后单击显示信息窗口