在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. Mysql被黑客入侵及安全措施总结

    情况概述 今天登陆在腾讯云服务器上搭建的 MySQL 数据库,发现数据库被黑了,黑客提示十分明显. MySQL 中只剩下两个数据库,一个是information_schema,另一个是黑客创建的PLE ...

  2. linux 定时备份数据库

    说明 检查Crontab是否安装 若没有 需要先安装Crontab定时工具 安装定时工具参考(https://www.cnblogs.com/shaohuixia/p/5577738.html) 需要 ...

  3. mariadb 学习笔记

    安装:yum install mariadb-server mariadb vim /etc/my.cnf.d/server.cnfinnodb_file_per_table = on#设置后当创建数 ...

  4. finger

    finger <username> 显示用户信息,包括用户的home目录,上一次登录的时间,默认shell等 finger XXXXX #输出: #Login: XXXXX Name: X ...

  5. Spring Boot常用注解和原理整理

    一.启动注解 @SpringBootApplication @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documen ...

  6. Jmeter脚本参数化和正则匹配

    我们在做接口测试过程中,往往会遇到以下几种情况 每次发送请求,都需要更改参数值为未使用的参数值,比如手机号注册.动态时间等 上一个接口的请求体参数用于下一个接口的请求体参数 上一个接口的响应体参数用于 ...

  7. PLSQL设置查询快捷键

    Tools-->Preferences-->User Interface-->Editor-->AutoReplace 新建文本文件shortcut.txt(名称和路径可以自定 ...

  8. TDD的简单实践

    前言 最近有幸跟随资深ThoughtWorks咨询师熊节老师一起学习测试驱动设计,经过短暂的十几天培训,对测试驱动设计的基本原则.实践模式.技巧有了一点点初步的认识. 在此之前,经常自嘲我经历的公司实 ...

  9. redis系列之------主从复制

    什么是主从复制 Redis的主从复制机制是指可以让从服务器(slave)能精确复制主服务器(master)的数据,如下图所示: 或者    主从复制的方式和工作原理 工作方式: Redis主从复制主要 ...

  10. Python监控主机是否存活,并发报警邮件

    利用python写了简单测试主机是否存活脚本,此脚本不适于线上使用,因为网络延迟.丢包现象会造成误报邮件,那么后续会更新判断三次ping不通后再发报警邮件,并启用多线程处理. #!/usr/bin/e ...