如何对动态工作空间中的动态图层执行identify操作

对动态工作空间(如raster folder、shapefile folder类型)存储的动态图层,如何在Flex中执行identify操作。
已邀请:

谢军

赞同来自: 李金星

【解决办法】:
对raster folder中的栅格数据进行identify和对shapefile folder中的shapefile图层进行identify操作思路是一致的,主要步骤如下:

1)添加一个动态地图服务,例如: 
 
<esri:ArcGISDynamicMapServiceLayer id=usaLayer url=....../> 


2)定义要查询的动态图层的DynamicLayerInfo。如果是raster folder中的栅格数据,标签需要使用RasterDataSource,dataSourceName需要加上格式后缀;如果是shapefile folder中的动态图层,标签需要使用TableDataSourc,dataSourceName不用加格式后缀。 例如: 
 
<esri:DynamicLayerInfo id=myRasterInfo layerId=999 defaultVisibility=true> 
<esri:LayerDataSource> 
<esri:RasterDataSource dataSourceName=sand.tif workspaceId=myRasterSpace/> 
</esri:LayerDataSource> 
</esri:DynamicLayerInfo> 


3)创建包含这个DynamicLayerInfo的数组,并把这个数组指定为IdentifyParameters类的dynamicLayerInfos属性。例如: 

var dynamicLayerInfos:Array = new Array(); 
dynamicLayerInfos.unshift(myRasterInfo); 
identifyParams.dynamicLayerInfos = dynamicLayerInfos; //var identifyParams:IdentifyParameters = new IdentifyParameters(); 


如果在单击执行identify时,不仅希望显示此位置点处动态图层的属性信息,还希望能够显示原有地图服务中包含的图层在这一点的属性信息,那么可以把全部图层的dynamiclayerinfo信息全部包含在这个新创建的数组中,例如:

var dynamicLayerInfos:Array = usaLayer.createDynamicLayerInfosFromLayerInfos(); 
dynamicLayerInfos.unshift(myRasterInfo); 
identifyParams.dynamicLayerInfos = dynamicLayerInfos; //var identifyParams:IdentifyParameters = new IdentifyParameters();
 


最后即可执行identify操作。

要回复问题请先登录注册