ArcGIS 实现框选区域查询要素后,要素点击弹出框

      提醒说明:本文用了两种方法,建议直接看第二种,因为第二种比第一种靠谱简单;   

   2015.11.12 在webGis 项目的开发中,当前已经实现使用QueryTask来针对要素进行NAME,空间的查询之后,并使用Symbol将要素显示出来在图上,如下图所示

ArcGIS 实现框选区域查询要素后,要素点击弹出框_第1张图片


在项目的实际需要中,我们需要点击上图要素的时候,弹出带有easyui属性表格的easyui Window,Arcgis api for javascript 在要素查询的时候,初始化了一个infoTemplate

当我们点击的时候弹出infoTemplate,如下图:

ArcGIS 实现框选区域查询要素后,要素点击弹出框_第2张图片




这个事infoTemplate,并不是我们所需要的easyui window,要实现我们的需求,我们最好使能获取鼠标点击要素的事件,这样子是比较快,但是找了很久都没有找出来,

由于当时项目很赶,就先放一边,自定义一个table去显示我们需要的数据 ,今早空下来,重新想了个办法:

1.写了一个map的点击的监听事件

2.在查询的时候,将查询的结果放到一个变量当中,设置为全局变量

3.获取点击的经纬度,并与保存的结果数据的经纬度比较,找出距离最小的距离以及相应的点的下标

4.弹出easyui window,根据下标获取相应的数据,显示到弹出框内的表格中


相关代码:

map.on("click",function(evt) {
				var clickPoint=evt.mapPoint;
				var mapClick_X=clickPoint.x;
				var mapClick_Y=clickPoint.y;
				$('#detailWin').window('close');
				if(layerResults){
					//先得到哪一个的点距离鼠标点击的位置最近,返回点的索引值
					var index=findMinDistance(mapClick_X,mapClick_Y);
					//index=-1表示鼠标点击的位置距离点的距离长度太远
					if(index== -1){
						return;
					}
					$('#detailWin').window({   
						left:evt.pageX+10,   
						top:evt.pageY+10,
						title:layerResults.features[index].attributes.NAME
					});  
					$('#detailWin').window('open');
				}else{
					return;
				}
				//将目标点的数据显示在属性表格中
				$('#testTable').propertygrid({   
					 columns:[[
				            { title: "名称", field: "name",width:70 },
				            { title: "值", field: "value",width:180 }
					        ]],
				     data:[   
				            {"name":"名称:","value":layerResults.features[index].attributes.NAME,"editor":"text"},   
				            {"name":"类别:","value":layerResults.features[index].attributes.LB,"editor":"text"},   
					    {"name":"经度:","value":layerResults.features[index].attributes.JD,"editor":"text"} 
						], 
				     showGroup:false
				  });  
				})


效果图:

ArcGIS 实现框选区域查询要素后,要素点击弹出框_第3张图片




写于2015-12-11,经过公司的大神提醒,上面的方法不好,以下是比较好用而且简单的方法:


假设要素服务的URL地址是127.0.0.1:1234/REST/services/0

var featureLayer=new esri.layers.Feature(URL);
featureLayer.on("click",function(evt)){

}


这边的evt.graphic.attributes就包含有该要素的属性信息,如果要弹出easyui的window,就可以在上面的方法的回调函数中执行





你可能感兴趣的:(ArcGis)