本来这个问题其实很简单,在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的描述给迷惑了。。。