ArcGIS Server之高亮查询要素 - [ArcGIS Server]
2009-12-01
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://geospatialthinking.blogbus.com/logs/52666699.html
GIS中,一般查询要素后,为提醒用户注意,都会在地图上用不同的颜色将要素高亮显示,或者以闪烁实现。
ArcGIS Server中,实现高亮查询要素有两种思路。一是在Manager中新建一个GraphicLayer层,这个层是在内层中的,然后在这个层上将需要高亮显示的要素重新画一遍。另一种思路是设置资源绘图功能的MapDescription属性的CustomGraphic属性。考虑到方法的难易程度,以及通用性,个人感觉用第一种方法更佳。第二种方法参见下面这篇博文:http://www.cnblogs.com/tuncaysanli/archive/2009/06/21/1507738.html
第一种方法的思路如下:
1.获得Manager里的GraphicResource,并在Resource里获取GraphicsLayer。
这个步骤有两个问题需要明确。一,GraphicResource是一种Resource,里面自然可以存1-n个Layer,而每一个Layer又是一个DataTable,两者之间是可以相互转换的。二,ArcGIS Server里的GraphicsLayer有2种,分别是ElementGraphicsLayer和FeatureGraphicsLayer。两种Layer最大的区别在于:ElementGraphicsLayer中可以存储不同类型的Geometry,类似于以前MO或者SO中的动态层,而且它不带属性信息;FeatureGraphicsLayer则相反,每一层只能存储同一几何类型的Geometry,且可以带属性信息。
2.获得查询要素的信息,并转化为Element,添加到ElementLayer中
GraphicElement element = new GraphicElement(geom, System.Drawing.Color.Yellow, System.Drawing.Color.Red);
从上面的代码我们可以发现,ESRI为GraphicElement提供了很多的构造函数,可以方便的新建GraphicElement。比如提供Element的颜色,选择的颜色,高亮的颜色,透明度等等,或者设置默认的style和选择状况下的style。
3.刷新地图,其中resourceName为GraphicResource的Name。
public static void RefreshMap(Map map, string resourceName)
{
if (map.ImageBlendingMode == ImageBlendingMode.WebTier)
{
map.Refresh();
}
else if (map.ImageBlendingMode == ImageBlendingMode.Browser)
{
map.RefreshResource(resourceName);
}
}