图形查询属性(IdentifyTask实现查询)//查询本地服务
主页代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>图形查询属性</title>
<link rel="stylesheet" href="http://js.arcgis.com/3.9/js/dojo/dijit/themes/claro/claro.css">
<link rel="stylesheet" href="http://js.arcgis.com/3.9/js/esri/css/esri.css">
<script src="http://js.arcgis.com/3.9/"></script>
<script src="Identify.js"></script>
</head>
<body class="claro">
<button data-dojo-type="dijit/form/Button">点</button>
<button data-dojo-type="dijit/form/Button">线</button>
<button data-dojo-type="dijit/form/Button">多边形</button>
<div id="mapDiv" style="width:900px; height:600px; border:1px solid #000;"></div> <!-- info window tabs -->
<div id="tabs" data-dojo-type="dijit/layout/TabContainer" style="width:385px;height:150px;">
<div id="layer2Tab" data-dojo-type="dijit/layout/ContentPane" title="州"></div>
<div id="layer1Tab" data-dojo-type="dijit/layout/ContentPane" title="河流"></div>
<div id="layer0Tab" data-dojo-type="dijit/layout/ContentPane" title="城市"></div>
</div>
</body>
</html>
Identify.js代码:
var map, identifyTask, identifyParams;
var pointSym, lineSym, polygonSym;
var layer2results, layer1results, layer0results; require(["dojo/parser", "dijit/registry", "esri/map", "esri/layers/ArcGISDynamicMapServiceLayer", "esri/toolbars/draw",
"esri/symbols/SimpleMarkerSymbol", "esri/symbols/SimpleLineSymbol", "esri/symbols/SimpleFillSymbol", "esri/Color",
"esri/tasks/IdentifyTask", "esri/tasks/IdentifyParameters", "esri/geometry/screenUtils",
"dijit/form/Button", "dijit/layout/TabContainer", "dijit/layout/ContentPane", "dojo/domReady!"],
function (parser, registry, Map, ArcGISDynamicMapServiceLayer, Draw,
SimpleMarkerSymbol, SimpleLineSymbol, SimpleFillSymbol, Color,
IdentifyTask, IdentifyParameters, screenUtils) { parser.parse(); map = new Map("mapDiv");
//var url = "http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StatesCitiesRivers_USA/MapServer";
var url = "http://localhost:6080/arcgis/rest/services/bluechina/MapServer";
var agoLayer = new ArcGISDynamicMapServiceLayer(url);
map.addLayer(agoLayer);
map.on("load", initIdentify); var redColor = new Color([255, 0, 0]);
var halfFillYellow = new Color([255, 255, 0, 0.5]);
pointSym = new SimpleMarkerSymbol(SimpleMarkerSymbol.STYLE_DIAMOND, 10,
new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, redColor, 1),
halfFillYellow);
lineSym = new SimpleLineSymbol(SimpleLineSymbol.STYLE_DASHDOT, redColor, 2);
polygonSym = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID,
new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, redColor, 2),
halfFillYellow); map.infoWindow.on("show", function () {
registry.byId("tabs").resize();
}); var tb = new Draw(map);
tb.on("draw-end", doIdentify); registry.forEach(function (d) {
if (d.declaredClass === "dijit.form.Button") {
d.on("click", activateTool);
}
}); function activateTool() {
var tool = null;
switch (this.label) {
case "点":
tool = "POINT";
break;
case "线":
tool = "POLYLINE";
break;
case "多边形":
tool = "POLYGON";
break;
}
tb.activate(Draw[tool]);
map.hideZoomSlider();
} function initIdentify(evt) {
// 实例化IdentifyTask
identifyTask = new IdentifyTask(url);
// IdentifyTask参数设置
identifyParams = new IdentifyParameters();
// 冗余范围
identifyParams.tolerance = 3;
// 返回地理元素
identifyParams.returnGeometry = true;
// 进行Identify的图层
identifyParams.layerIds = [2, 1, 0];
// 进行Identify的图层为全部
identifyParams.layerOption = IdentifyParameters.LAYER_OPTION_ALL; // 设置infoWindow的大小
evt.map.infoWindow.resize(415, 200);
// 设置infoWindow的标题头
evt.map.infoWindow.setTitle("Identify结果");
evt.map.infoWindow.setContent(registry.byId("tabs").domNode);
} // 进行Identify
function doIdentify(evt) {
// 清除上一次的高亮显示
map.graphics.clear();
// Identify的geometry
identifyParams.geometry = evt.geometry;
// Identify范围
identifyParams.mapExtent = map.extent;
identifyTask.execute(identifyParams, function (idResults) {
addToMap(idResults, evt.geometry);
});
} // 在infoWindow中显示Identify结果
function addToMap(idResults, geometry) {
layer2results = { displayFieldName: null, features: [] };
layer1results = { displayFieldName: null, features: [] };
layer0results = { displayFieldName: null, features: [] };
for (var i = 0, il = idResults.length; i < il; i++) {
var idResult = idResults[i];
if (idResult.layerId === 2) {
if (!layer2results.displayFieldName) {
layer2results.displayFieldName = idResult.displayFieldName;
}
layer2results.features.push(idResult.feature);
} else if (idResult.layerId === 1) {
if (!layer1results.displayFieldName) {
layer1results.displayFieldName = idResult.displayFieldName;
}
layer1results.features.push(idResult.feature);
} else if (idResult.layerId === 0) {
if (!layer0results.displayFieldName) {
layer0results.displayFieldName = idResult.displayFieldName;
}
layer0results.features.push(idResult.feature);
}
}
registry.byId("layer2Tab").setContent(layerTabContent(layer2results, "layer2results"));
registry.byId("layer1Tab").setContent(layerTabContent(layer1results, "layer1results"));
registry.byId("layer0Tab").setContent(layerTabContent(layer0results, "layer0results")); // 设置infoWindow显示
var firstPt;
if (geometry.type == "point")
firstPt = geometry;
else
firstPt = geometry.getPoint(0, 0);
var screenPoint = screenUtils.toScreenPoint(map.extent, map.width, map.height, firstPt);
map.infoWindow.show(screenPoint, map.getInfoWindowAnchor(screenPoint));
} function layerTabContent(layerResults, layerName) {
var content = "<i>选中要素数目为:" + layerResults.features.length + "</i>";
switch (layerName) {
case "layer2results":
content += "<table border='1'><tr><th>ID</th><th>州名</th><th>面积</th></tr>";
for (var i = 0, il = layerResults.features.length; i < il; i++) {
content += "<tr><td>" + layerResults.features[i].attributes['FID'] + " <a href='#' onclick='showFeature(" + layerName + ".features[" + i + "]); return false;'>(显示)</a></td>";
content += "<td>" + layerResults.features[i].attributes['NAME'] + "</td>";
content += "<td>" + layerResults.features[i].attributes['AREA'] + "</td>";
}
content += "</tr></table>";
break;
case "layer1results":
content += "<table border='1'><tr><th>ID</th><th>名称</th></tr>";
for (var i = 0, il = layerResults.features.length; i < il; i++) {
content += "<tr><td>" + layerResults.features[i].attributes['FID'] + " <a href='#' onclick='showFeature(" + layerName + ".features[" + i + "]); return false;'>(显示)</a></td>";
content += "<td>" + layerResults.features[i].attributes['NAME'] + "</td>";
}
content += "</tr></table>";
break;
case "layer0results":
content += "<table border='1'><tr><th>ID</th><th>形状</th><th>省名</th><th>面积</th></tr>";
for (var i = 0, il = layerResults.features.length; i < il; i++) {
content += "<tr><td>" + layerResults.features[i].attributes['FID'] + " <a href='#' onclick='showFeature(" + layerName + ".features[" + i + "]); return false;'>(显示)</a></td>";
content += "<td>" + layerResults.features[i].attributes['Shape'] + "</td>";
content += "<td>" + layerResults.features[i].attributes['NAME'] + "</td>";
content += "<td>" + layerResults.features[i].attributes['AREA'] + "</td>";
}
content += "</tr></table>";
break;
}
return content;
}
}); // 高亮显示选中元素
function showFeature(feature) {
map.graphics.clear();
var symbol;
// 将几何对象加入到地图中
switch (feature.geometry.type) {
case "point":
symbol = pointSym;
break;
case "polyline":
symbol = lineSym;
break;
case "polygon":
symbol = polygonSym;
break;
} feature.setSymbol(symbol);
map.graphics.add(feature);
}
图形查询属性(IdentifyTask实现查询)//查询本地服务的更多相关文章
- matlab中get查询图形对象属性
来源:https://ww2.mathworks.cn/help/matlab/ref/get.html?searchHighlight=get&s_tid=doc_srchtitle get ...
- QueryTask,FindTask,IdentifyTask三种查询的区别
1:QueryTask是一个进行空间和属性查询的功能类,它可以在某个地图服务的某个子图层内进行查询,顺便需要提一下的是,QueryTask进行查询的地图服务并不必项加载到Map中进行显示.QueryT ...
- ArcGIS Engine 创建索引(属性索引)——提高查询效率
转自原文 ArcGIS Engine 创建索引(属性索引)——提高查询效率 众所周知,建立索引可以提高查询的效率,当对FeatureClass中的某一列频繁的查找,且数据量比较大时,建立索引是非常有必 ...
- 使用resultMap实现ibatis复合数据结构查询(1.多重属性查询;2.属性中含有列表查询)
以订单为例(订单详情包括了订单的基本信息,配送物流信息,商品信息),直接上代码: 1.多重属性查询 java实体 public class OrderDetail { @XmlElement(requ ...
- Hibernate第十篇【Hibernate查询详解、分页查询】
前言 在Hibernate的第二篇中只是简单地说了Hibernate的几种查询方式-.到目前为止,我们都是使用一些简单的主键查询阿-使用HQL查询所有的数据-.本博文主要讲解Hibernate的查询操 ...
- Hibernate_day04--课程安排_Hibernate查询方式_对象导航查询_OID查询
Hibernate_day04 上节内容 今天内容 Hibernate查询方式 对象导航查询 OID查询 HQL查询 查询所有 条件查询 排序查询 分页查询 投影查询 聚集函数使用 QBC查询 查询所 ...
- mongodb_查询操作使用_条件查询、where子句等(转)
<?php /* mongodb_查询操作使用_条件查询.where子句等(转并学习) 1.find()/findOne() mongodb数据库的查询操作即使用find()或者findO ...
- 22Mybatis_订单商品数据模型_多对多查询以及对多对多查询的总结
之前讲了一对一,一对多查询,这篇文章讲的是多对多. 先给出需求:查询用户及用户购买商品信息. 我们由之前的文章知道,这个需求是多对多的. 还是那个终止我们的mybatis所做的不管是之前的一对一还是一 ...
- T-SQL查询语句(二):嵌套查询
一个select...From...Where查询语句块可以嵌套在另一个select...From...Where查询块的Where子句中,称为嵌套查询.外层查询称为父查询,主查询.内层查询称为子查询 ...
随机推荐
- linux之 LVM扩容
1. 查看本机现在磁盘的情况[root@oralce10g ~]# df Filesystem 1K-blocks Used Available Use% Mounted on/dev/mapper/ ...
- Web验证方式(3)--OAuth 2.0协议
介绍 OAuth协议是用来解决第三方应用程序访问Http Service的时候的认证问题.举个例子:某视频网站支持用户通过微信登陆,然后获取用户在微信上的图像信息. 在这个场景里 微信充当的就是Htt ...
- 智能家居入门DIY——【五、执行命令】
前面几篇介绍了ESP8266使用AT命令来连接WIFI实现一系列功能.这一篇介绍一下使用Wemos D1 Wifi来进行开发,当然也可以用常见的8针ESP8266来完成(只是需要按网上的方法将Ardu ...
- <只看这个就够了。。。>Android自动化测试及性能优化
Android自动化测试及性能优化 分类: Android Java Tools2012-12-09 23:31 4300人阅读 评论(0) 收藏 举报 软件自动化测试对于程序员来说能够确保软件开发的 ...
- RDLC报表系列二
---------------------ReportServer数据库权限表说明------------------ --用户表 select * from Users --角色表 select * ...
- pythonNetday06
进程 Process(target,name,args,kwargs) p.pid : 创建的新的进程的PID号 p.is_alive() 判断进程是否处于alive状态 p.daemon = Tru ...
- 关于mysql 间隙锁
前段时间系统老是出现update死锁,很是纠结.经过排查发现是间隙锁!间隙锁是innodb中行锁的一种, 但是这种锁锁住的却不止一行数据,他锁住的是多行,是一个数据范围.间隙锁的主要作用是为了防止出现 ...
- 2.ehcache.xml简介
转自:https://www.cnblogs.com/crazylqy/p/4238148.html ehcache.xml文件是用来定义Ehcache的配置信息的,更准确的来说它是定义CacheMa ...
- windows解压缩版MySQL5.6.40的安装
windows解压缩版MySQL5.6.40的安装 安装步骤: 1.下载mysql-5.6.40-winx64.zip https://cdn.mysql.com//Downloads/MySQL-5 ...
- VML元素的相关资料
虽然VML已经过气了,但有时我还不得不使用它,下面是我收集或研究得到的一些东西. 判定一个元素是否为VML元素 function isVML(el) { if (el && el.no ...