맵문서 자체에 필요한 피쳐들만을 정의해서 사용할 수 있지만
맵로드시에 많은 데이터중 조건에 의해서 필요한 피쳐들만 보여줄 필요가 있을때
사용한다.
public void DefinitionQuery(string resourceString )
{ //나는 page_load 이벤트에 사용하여 맵리소를 초기화를 시켰다.
if (!MapResourceManager1.Initialized)
MapResourceManager1.Initialize();
//definition query로 처음 검색조건에 맞는 피쳐만 가져오기
ESRI.ArcGIS.ADF.Web.DataSources.ArcGISServer.MapFunctionality mapFunc = Map1.GetFunctionality
(resourceString) as ESRI.ArcGIS.ADF.Web.DataSources.ArcGISServer.MapFunctionality;
//Local 리소스를 사용한다.
MapResourceLocal AGSLocalMapResource = (MapResourceLocal)mapFunc.Resource;
IServerContext mapcontext = AGSLocalMapResource.ServerContextInfo.ServerContext;
IMapServerObjects mso = (IMapServerObjects)AGSLocalMapResource.MapServer;
IMap map = mso.get_Map(AGSLocalMapResource.DataFrame);
//2개 이상의 레이어 처리(동일 조건일때..)
int layercheck = 0;
for (int i = 0; i < map.LayerCount; i++)
{
ILayer layer = map.get_Layer(i);
if (layer is IFeatureLayer)
{
if (layer.Name.Equals("레이어1") || layer.Name.Equals("레이어2"))
{
IFeatureLayerDefinition layerDef;
string queryString = "조건문"; //조건 검사
IFeatureLayer2 FLayer = layer as IFeatureLayer2;
layerDef = (IFeatureLayerDefinition)FLayer;
layerDef.DefinitionExpression = queryString;
layercheck++;
if (layercheck == 2) //2개의 레이어 처리를 하였다면 빠져나가기.
{
queryString = "";
break;
}
else
{
queryString = "";
continue;
}
}
}
}
AGSLocalMapResource.RefreshServerObjects(); //또는 Map1.refresh(); 사용
}