在ArcGIS API中查询功能是经常使用的,常用的三个查询分别是FindTask,QueryTask,IdentifyTask。它们各自都有自己的特点。

查询功能分为属性查询和空间查询

FindTask的官方API链接:

https://developers.arcgis.com/javascript/3/jsapi/findtask-amd.html

这个demo是查询某一个图层的一个属性,然后把结果撒点在地图上,鼠标移上去可以看到自定的infowindow

function doFind() {
// alert("QQQ");
require(
[
"esri/tasks/FindTask", "esri/tasks/FindParameters",
"esri/SpatialReference",
"esri/InfoTemplate",
"esri/geometry/Point",
"esri/graphic",
"esri/layers/GraphicsLayer",
"esri/geometry/webMercatorUtils",
"esri/symbols/SimpleFillSymbol",
"esri/symbols/SimpleLineSymbol",
"esri/symbols/SimpleMarkerSymbol",
"js/PointCluster",
"dojo/dom"
],function (
FindTask,
FindParameters,
SpatialReference,
InfoTemplate,
Point,
Graphic,
GraphicsLayer,
webMercatorUtils,
SimpleFillSymbol,
SimpleLineSymbol,
SimpleMarkerSymbol,
PointCluster,
dom,
) {
//要查询的数据源
var findTask = new FindTask("http://localhost:6080/arcgis/rest/services/GW_MAP_LF/MapServer");
//创建属性查询参数
var findParams = new FindParameters();
// findParams.returnGeometry = true;
//查询所有图层
findParams.layerIds = [23];
//查询指定的字段,如果不指定此参数,则查询所有的字段
findParams.searchFields = ["name"];
//是否返回几何对象
// findParams.returnGeometry = true;
//是否接受模糊查找,如果仅仅进行模糊查询,不需要where,设置这个参数就可以
// findParams.contains = true;
findParams.searchText = dom.byId("text").value;
if(map.graphicsLayerIds)
{
//map.infoWindow.hide();
clusterLayer.hide();
}
//执行查询
findTask.execute(findParams,function(results){ if(results){
console.log(results); // var json = {title:"Attributes",content:"company: ${layerId}"};
var infoTemplate = new InfoTemplate();
//map.infoWindow.resize(width,height)
//map.infoWindow.resize(245,125); /*地图显示样式*/
var graphicLayer = new GraphicsLayer();
var defaultsymbol = new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_SQUARE, 10,
new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID,
new dojo.Color([255,0,0]), 1),
new dojo.Color([0,255,0,0.25])); for (var i = 0; i < results.length; i++) {
var pt = new Point(results[i].feature.attributes.x,results[i].feature.attributes.y,map.spatialReference);
infoTemplate.title="Attributes";
infoTemplate.content=results[i].feature.attributes.y;
var graphic = new Graphic(pt,defaultsymbol,null,infoTemplate);
graphicLayer.add(graphic);
}
map.addLayer(graphicLayer); graphicLayer.on("mouse-over", function (evt) {
map.graphics.clear(); //使用地图图形层
var content = evt.graphic.getContent();
map.infoWindow.setContent(content);
var title = evt.graphic.getTitle();
map.infoWindow.setTitle(title);
var highlightGraphic = new Graphic(evt.graphic.geometry,defaultsymbol);
map.graphics.add(highlightGraphic);
map.infoWindow.show(evt.screenPoint,map.getInfoWindowAnchor(evt.screenPoint));
});
graphicLayer.on("mouse-out", function (evt) {
// map.graphics.clear();
// map.infoWindow.hide();
});
}else{
alert("查不到");
}
});
});
}

ArcGIS api for JavaScript 3.27 FindTask查询功能的更多相关文章

  1. ArcGIS api for javascript——用缓存区查询地图

    描述 本例展示了如何在另外一个任务里使用一个任务的结果.单击地图查看被单击的点的1公里范围内的缓存(如果需要可以修改这个默认的缓存距离).也可以看缓存区的这些点的人口普查街区信息.单击一个点查看更多的 ...

  2. ArcGIS api for javascript——用图表显示查询结果

    描述 本例展示了如何使用查询任务结果用去Google Chart API构建一个图表.当运行本例,点击一个郡县去看出现在一个无焦点的InfoWindow中的人口统计的数据的图表. 函数init创建了一 ...

  3. ArcGIS api for javascript——显示多个查询结果

    描述 本例展示了在重叠的多边形处理查询的一种方式.单击一个石油和天然气的字段来查看地图上的高亮显示.如果仅仅点击一个要素,能够在单击一次来查看包含一些属性的InfoWindow.如果偶然单击到重叠的要 ...

  4. ArcGIS api for JavaScript 3.27 聚合(cluster)

    基础聚合:只聚合,不显示聚合的数量 // Basic Clustering require([ "esri/map", "esri/layers/FeatureLayer ...

  5. ArcGIS api for JavaScript 3.27 按需显示需要的图层

    实例:现有一图层服务,现需要动态显示该图层中的一部分内容:点击一个图例,只显示这个图例的内容,再点击别的图例,原来的内容不消失,再次点击已被点击的图例才会消失. 思路:setLayerDefiniti ...

  6. ArcGIS api for JavaScript 3.27 在线浏览的一些小部件

    var navOption; var navToolbar;// 当前选择的操作 require( [ "esri/toolbars/navigation", "esri ...

  7. 基于ArcGIS API for Javascript的地图编辑工具

    最近工作上需要用ArcGIS API for Javascript来开发一个浏览器上使用的地图编辑工具,分享一下一些相关的开发经验. 我开发的地图编辑工具是根据ESRI提供的例子修改而来的,参考的例子 ...

  8. ArcGIS API for Javascript 使用缓冲区结果做query查询出现“esri.config.defaults.io.proxyUrl 尚未进行设置”错误

    1.前言 在研究ArcGIS API for JavaScript时会遇到这样的问题,比如我们在做缓冲区分析时,用分析的范围作为空间查询query的参数,在执行结果中总是会看到“esri.config ...

  9. ArcGIS api for javascript——加载查询结果,悬停显示信息窗口

    转自原文 ArcGIS api for javascript——加载查询结果,悬停显示信息窗口 描述 本例在开始和地图交互前执行一个查询任务并加在查询结果.这允许用户鼠标悬停在任意郡县时立即见到Inf ...

随机推荐

  1. 微信 电脑版 HOOK(WeChat PC Hook)- 框架

    软件构成:一个主进程exe和一个注入的dll主进程exe:把dll注入到微信,发送指令给dll,接受dll的信息注入的dll:被注入到微信内部,拦截微信的数据,调用微信的功能 接收主进程的指令,执行指 ...

  2. 集合系列 Queue(十一):ArrayDeque

    从名字我们可以看出,其实一个双向队列实现,而且底层采用数组实现. public class ArrayDeque<E> extends AbstractCollection<E> ...

  3. 使用ReentrantLock

    /** * java.util.concurrent.locks包提供的ReentrantLock用于替代synchronized加锁* 因为synchronized是Java语言层面提供的语法,所以 ...

  4. Vultr主机绑定域名

    1.在腾讯云上注册域名 然后,域名实名认证 2.Vultr主机购买(看我之前写的:手把手教你如何自己搭梯子) 然后会获取到一个服务器IP地址 3.绑定域名与IP 点解,解析后会弹出让你输入IP地址,此 ...

  5. Flask 教程 第十二章:日期和时间

    本文翻译自The Flask Mega-Tutorial Part XII: Dates and Times 这是Flask Mega-Tutorial系列的第十二部分,我将告诉你如何以适配所有用户的 ...

  6. 为什么学习Python?

    互联网高速发展的今天,很荣幸能够接触计算机这个专业,成为一名程序猿小白,本科期间学习了C.C++.Java.Pthon.C#,每门语言都了解那么一点,学的很杂,刚好遇到大学毕业的这个暑期,在继续读研之 ...

  7. 剑指offer笔记面试题5----替换空格

    题目:请实现一个函数,把字符串中的每个空格替换成"20%".例如,输入"We are happy."则输出"We%20are%20happy.&quo ...

  8. bootstrap-table 常用总结-1

    两种表格工具,今天都用到了,一种是我前几篇写到过的jqgrid,(传送门)另一个就是bootstrap-table了.用过之后会发现,两种表格的方式大同小异,但是为什么这次要换成bootstrap-t ...

  9. SQLserver、MySQL、ORCAL查询数据库、表、表中字段以及字段类型

    一.SQLServer命令 1.查询SQLServer中的每个数据库 SELECT * from sysdatabases 2.查询SQLServer中指定数据库的所有表名 select name f ...

  10. 最近几周,写了个微信好友检测助手App

    版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/130 微信好友检测助手App 最近几周,写了个微信好友检测 ...