在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. SSM框架整合之练习篇

    SSM的练习 : 1开发环境 数据库:mysql5.5以上版本. Jdk:1.7 开发环境:Eclipse mars2 Spring:4.2.4 Mybatis:3.2.7 Tomcat:7 2数据库 ...

  2. 基于vue+leaflet+echart的足迹分享评论平台

    (其实题目是随便取的,目的只是用来证明Vue+leaflet+springboot技术栈的可行性) 效果 小专栏不支持上传视频?想看的话可以去我的知乎看最新的文章,那个应该可以.在这里 主要功能描述 ...

  3. Linux修改History历史命令数量

    ****打开  vim  /etc/profile vim  /etc/profile 追加配置 # /etc/profile: system-wide .profile file for the B ...

  4. c代码中while循环的一个死机问题引发的思考

    前记   c语言已经是一门经常吃饭的本领,本来是要有种看一眼,就知道哪儿出问题了才行,没想到,遇到实际问题的时候,才知道自己的修为不到家.还没有达到那种炉火纯青的境界.看来,不是这个世界没有机会,是自 ...

  5. swoole加密可破解吗

    程序的执行和加解密过程合二唯一,无论是内部开发人员和外部黑客攻击,即使拿到了数据和私钥和服务器的root权限,也无法解密还原数据. Swoole将加解密分成了3部分(程序+算法+私钥),缺一不可解密. ...

  6. 关于Redis 二进制内容的 可视化尝试

    二进制内容的 能否可视化?  网上的资料比较少啊! -------------------------------------------------------------------------- ...

  7. Leetcode题解 - DFS部分题目代码+思路(756、1034、1110、491、721、988)

    756. 金字塔转换矩阵 """ 学到的新知识: from collections import defaultditc可以帮我们初始化字典,不至于取到某个不存在的值的时 ...

  8. css实现内容不相同的左右两个div等高

    问题提出 现在有两个div左右排列,但是两个div的内容不相同,如何设置两个div的css做到在两个div等高排列呢? 下面是网上找的3种实现方法,觉得很有代表性,所以索性收藏起来. 方法一 通过父元 ...

  9. django nginx 504 time-out 错误

    报错: 分析 nginx和uwsgi整合时有三个参数可以用于设置超时时间: 1.uwsgi_connect_timeout: 默认60秒,与uwsgi-server连接的超时时间,该值不能超过75秒. ...

  10. English: Class Speed

    Xx_Introduce https://www.jianshu.com/p/d1c1b84d89e8 Please protection,respect,love,"China's Int ...