本來這個問題其實很簡單,在Flyingis的blog里面,它給的是一個用IMapServer的解決方案,但是由于要用到AO,所以我就沒打算用它,因為我現在做的系統我盡可能的只利用Common API和Datasource Specific API,不想去與ServerContext打交道。
然后這樣實現了:
IMapFunctionality mapFunctionality = mapResource.CreateFunctionality(typeof(IMapFunctionality), "MapDrawer") as IMapFunctionality;
mapFunctionality.DisplaySettings = new ESRI.ArcGIS.ADF.Web.DisplaySettings();
mapFunctionality.DisplaySettings.Visible = true;
mapFunctionality.DisplaySettings.ImageDescriptor = new ESRI.ArcGIS.ADF.Web.ImageDescriptor(ESRI.ArcGIS.ADF.Web.ImageFormat.PNG24, width, height);
//渲染到圖片
ESRI.ArcGIS.ADF.Web.MapImage mi = mapFunctionality.DrawExtent(((IMapResource)mapFunctionality.Resource).MapInformation.DefaultExtent);
return mi.Url;
但是這URL就老不出來。不管怎么檢查都找不到原因。
察看了MapResourceLocal,Capability也可以使用URL的方式,隨后我就很納悶了。。。
然后看到Functionality有這么個項目MapFunctionality.DisplaySettings.ImageDescriptor.ReturnMimeData
然后我就好奇心來了,如果把ReturnMimeData設置為False,既然它不能給我個URL,那把這個再禁掉,它還渲染啥呢?
結果令我大跌眼鏡,沒想到在關掉MimeData以后,URL就出來了。。。我才發現我完全被ArcCatalog里面的服務配置選項中的MIME+URL的描述給迷惑了。。。