gisempire100
捉鬼专家
捉鬼专家
  • 注册日期2004-08-13
  • 发帖数552
  • QQ
  • 铜币2462枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:979回复:0

arcgis server 添加一个Grphic点例子

楼主#
更多 发布于:2008-02-18 10:45
<P  align=center>(参考代码位置在ESRI帮助ArcGIS_AddGraphics_CSharp\App_Code\PointTool.cs)</P>
<P >1.       开发环境,arcGIS server 9.2 sp4,VS2005</P>
<P >2.       通过ESRI提供的开发模板建立一个框架。</P>
<P >3.       进入代码,在App_Code右键,建立一个类,名称为:clsDrawPoint.cs</P>
<P >4.       点击Default.aspx,进入“源模式“,拷贝如下代码:</P>
<P>  <esri:Tool ClientAction="Point" DefaultImage="~/images/point.gif" DisabledImage="~/images/pointD.gif" HoverImage="~/images/pointU.gif" JavaScriptFile="Point" Name="ToolDrawPoint" SelectedImage="~/images/fixedzoominD.gif" ServerActionAssembly="App_Code" ServerActionClass="clsDrawPoint"  Text="画点" ToolTip="画一个点在地图上" /> 到<ToolbarItems>节点中。</P>
<P>5.双击clsDrawPoint.cs,添加如下代码public class clsDrawPoint:ESRI.ArcGIS.ADF.Web.UI.WebControls.Tools.IMapServerToolAction ,及让类继承于IMapServerToolAction,取得鼠标点击事件。</P>
<P>添加如下代码:</P>
<P  align=left>using System;</P>
<P  align=left>using System.Data;</P>
<P  align=left>using System.Configuration;</P>
<P  align=left>using System.Web;</P>
<P  align=left>using System.Web.Security;</P>
<P  align=left>using System.Web.UI;</P>
<P  align=left>using System.Web.UI.WebControls;</P>
<P  align=left>using System.Web.UI.WebControls.WebParts;</P>
<P  align=left>using System.Web.UI.HtmlControls;</P>
<P  align=left>using ESRI.ArcGIS.Display;</P>
<P  align=left>using stdole;</P>
<P  align=left>using ESRI.ArcGIS.Carto;</P>
<P  align=left>using ESRI.ArcGIS.Geometry;</P>
<P  align=left> </P>
<P  align=left>/// <summary></P>
<P  align=left>/// 绘制一个点在地图上</P>
<P  align=left>/// </summary></P>
<P  align=left>public class clsDrawPoint:ESRI.ArcGIS.ADF.Web.UI.WebControls.Tools.IMapServerToolAction  </P>
<P  align=left>{</P>
<P  align=left>     public clsDrawPoint()</P>
<P  align=left>     {</P>
<P  align=left> </P>
<P  align=left>         //</P>
<P  align=left>         // TOD 在此处添加构造函数逻辑</P>
<P  align=left>         //</P>
<P  align=left>     }</P>
<P  align=left> </P>
<P  align=left>    #region IMapServerToolAction 成员</P>
<P  align=left>    /// <summary></P>
<P  align=left>    /// 响应地图上鼠MOUSEDOWN事件,据我所知,应该是MouseUp事件,但是。。。</P>
<P  align=left>    /// </summary></P>
<P  align=left>    /// <param name="args">从地图上来的参数,强制转换为一个点事件</param></P>
<P  align=left>    public void ServerAction(ESRI.ArcGIS.ADF.Web.UI.WebControls.ToolEventArgs args)</P>
<P  align=left>    {</P>
<P  align=left> </P>
<P  align=left>        //取得Map</P>
<P  align=left>        ESRI.ArcGIS.ADF.Web.UI.WebControls.Map adfMap = (ESRI.ArcGIS.ADF.Web.UI.WebControls.Map)args.Control;</P>
<P  align=left> </P>
<P  align=left>        //强制转换为点事件,这样可以取得事件的点屏幕坐标</P>
<P  align=left>        ESRI.ArcGIS.ADF.Web.UI.WebControls.PointEventArgs pPontEventArgs = (ESRI.ArcGIS.ADF.Web.UI.WebControls.PointEventArgs)args;</P>
<P  align=left>        System.Drawing.Point screenPoint = pPontEventArgs.ScreenPoint;</P>
<P  align=left>        ESRI.ArcGIS.ADF.Web.Geometry.Point adfPoint = ESRI.ArcGIS.ADF.Web.Geometry.Point.ToMapPoint(screenPoint, adfMap.GetTransformationParams(ESRI.ArcGIS.ADF.Web.Geometry.TransformationDirection.ToMap));</P>
<P  align=left>        ESRI.ArcGIS.ADF.ArcGISServer.PointN agsSoapPoint = ESRI.ArcGIS.ADF.Web.DataSources.ArcGISServer.Converter.FromAdfPoint(adfPoint);</P>
<P  align=left>        //取得功能集合</P>
<P  align=left>        ESRI.ArcGIS.ADF.Web.DataSources.ArcGISServer.MapFunctionality agsMF = (ESRI.ArcGIS.ADF.Web.DataSources.ArcGISServer.MapFunctionality)adfMap.GetFunctionality(0);</P>
<P  align=left>        ESRI.ArcGIS.ADF.ArcGISServer.MapDescription agsSoapMapDesc = agsMF.MapDescription;</P>
<P  align=left>        </P>
<P  align=left>        //设置鼠标点</P>
<P  align=left>        agsSoapPoint.IDSpecified = false;</P>
<P  align=left>        agsSoapPoint.MSpecified = false;</P>
<P  align=left>        agsSoapPoint.ZSpecified = false;</P>
<P  align=left>        agsSoapPoint.SpatialReference = ESRI.ArcGIS.ADF.Web.DataSources.ArcGISServer.Converter.FromAdfSpatialReference(adfMap.SpatialReference);</P>
<P  align=left>        </P>
<P  align=left>        //设置颜色</P>
<P  align=left>        ESRI.ArcGIS.ADF.ArcGISServer.RgbColor agsSoapRgbcolor = new ESRI.ArcGIS.ADF.ArcGISServer.RgbColor();</P>
<P  align=left>        agsSoapRgbcolor.Red = 255;</P>
<P  align=left>        agsSoapRgbcolor.Green = 0;</P>
<P  align=left>        agsSoapRgbcolor.Blue = 0;</P>
<P  align=left>        agsSoapRgbcolor.AlphaValue = 255;</P>
<P  align=left> </P>
<P  align=left>        //点符号的颜色,样式和大小</P>
<P  align=left>        ESRI.ArcGIS.ADF.ArcGISServer.SimpleMarkerSymbol agsSoapSimpleMarkerSymbol = new ESRI.ArcGIS.ADF.ArcGISServer.SimpleMarkerSymbol();</P>
<P  align=left>        agsSoapSimpleMarkerSymbol.Style = ESRI.ArcGIS.ADF.ArcGISServer.esriSimpleMarkerStyle.esriSMSCross ;</P>
<P  align=left>        agsSoapSimpleMarkerSymbol.Color = agsSoapRgbcolor;</P>
<P  align=left>        agsSoapSimpleMarkerSymbol.Size = 5;</P>
<P  align=left> </P>
<P  align=left>        //设置Element的符号和位置</P>
<P  align=left>        ESRI.ArcGIS.ADF.ArcGISServer.MarkerElement agsSoapMarkerEle = new ESRI.ArcGIS.ADF.ArcGISServer.MarkerElement();</P>
<P  align=left>        agsSoapMarkerEle.Symbol = agsSoapSimpleMarkerSymbol;</P>
<P  align=left>        agsSoapMarkerEle.Point = agsSoapPoint;</P>
<P  align=left> </P>
<P  align=left>        //添加到Graphic中</P>
<P  align=left>        if (agsSoapMapDesc.CustomGraphics != null)</P>
<P  align=left>        {</P>
<P  align=left>            ESRI.ArcGIS.ADF.ArcGISServer.GraphicElement[] agsSoapGraphicsEleArrayOld = agsSoapMapDesc.CustomGraphics;</P>
<P  align=left>            int dElementCount = agsSoapGraphicsEleArrayOld.Length;</P>
<P  align=left>            ESRI.ArcGIS.ADF.ArcGISServer.GraphicElement[] agsSoapGraphicsEleArrayNew = new ESRI.ArcGIS.ADF.ArcGISServer.GraphicElement[dElementCount + 1];</P>
<P  align=left>            agsSoapGraphicsEleArrayOld.CopyTo(agsSoapGraphicsEleArrayNew, 0);</P>
<P  align=left>            agsSoapGraphicsEleArrayNew[dElementCount] = agsSoapMarkerEle;</P>
<P  align=left>            agsSoapMapDesc.CustomGraphics = agsSoapGraphicsEleArrayNew;</P>
<P  align=left>        }</P>
<P  align=left>        else</P>
<P  align=left>        {</P>
<P  align=left>            ESRI.ArcGIS.ADF.ArcGISServer.GraphicElement[] agsSoapGraphicEle = new ESRI.ArcGIS.ADF.ArcGISServer.GraphicElement[1];</P>
<P  align=left>            agsSoapGraphicEle[0] = agsSoapMarkerEle;</P>
<P  align=left>            agsSoapMapDesc.CustomGraphics = agsSoapGraphicEle;</P>
<P  align=left>        }</P>
<P  align=left> </P>
<P  align=left>        //刷新地图</P>
<P  align=left>        if (adfMap.ImageBlendingMode == ESRI.ArcGIS.ADF.Web.UI.WebControls.ImageBlendingMode.Browser)</P>
<P  align=left>        {</P>
<P  align=left>            adfMap.RefreshResource(agsMF.Resource.Name);</P>
<P  align=left>        }</P>
<P  align=left>        else</P>
<P  align=left>        {</P>
<P  align=left>            adfMap.Refresh();</P>
<P  align=left>        }</P>
<P  align=left>   </P>
<P  align=left>    }</P>
<P  align=left>    #endregion</P>
<P>}</P>

<P>发布后图片为:<BR><a href="http://groups.google.com/group/arc_gis/web/arcGIS%20Server%5Darcgis%20server%20%E6%B7%BB%E5%8A%A0%E4%B8%80%E4%B8%AAGrphic%E7%82%B9%E4%BE%8B%E5%AD%90.JPG?hl=zh-CN" target="_blank" ><IMG src="http://groups.google.com/group/arc_gis/web/arcGIS%20Server%5Darcgis%20server%20%E6%B7%BB%E5%8A%A0%E4%B8%80%E4%B8%AAGrphic%E7%82%B9%E4%BE%8B%E5%AD%90.JPG?hl=zh-CN;display=thumb;width=420;height=420"></A></P>
喜欢0 评分0
A friend is never known till a man has need. ...CL
游客

返回顶部