您的位置:首页 > 编程语言

arcgis server 9.2代码阅读笔记一:在图层中增加一个点

2011-06-23 18:10 405 查看
代码来源 ARCGIS 9.2例子

// Copyright 2006 ESRI

//

// All rights reserved under the copyright laws of the United States

// and applicable international laws, treaties, and conventions.

//

// You may freely redistribute and use this sample code, with or

// without modification, provided you include the original copyright

// notice and use restrictions.

// AUTHER:糊涂虫 2007.9.19

// See use restrictions at /arcgis/developerkit/userestrictions.

using System;

using System.Data;

using System.Configuration;

using System.Web;

using System.Web.Security;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using ESRI.ArcGIS.ADF.Web.UI.WebControls.Tools;

using ESRI.ArcGIS.ADF.Web.UI.WebControls;

using ESRI.ArcGIS.ADF.ArcGISServer;

using ESRI.ArcGIS.Server;

using ESRI.ArcGIS.Carto;

using ESRI.ArcGIS.Geometry;

using ESRI.ArcGIS.esriSystem;

using ESRI.ArcGIS.Display;

using System.Collections;

using ESRI.ArcGIS.ADF.Web.DataSources.ArcGISServer;

public class PointTool : IMapServerToolAction

{

public void ServerAction(ToolEventArgs args)

{

//获得图层控制

ESRI.ArcGIS.ADF.Web.UI.WebControls.Map mapctrl;

mapctrl = (ESRI.ArcGIS.ADF.Web.UI.WebControls.Map) args.Control;

//获得屏幕上点的集合

PointEventArgs pea = (PointEventArgs)args;

System.Drawing.Point screen_point = pea.ScreenPoint;

//获得图层的能力

MapFunctionality mf = (MapFunctionality) mapctrl.GetFunctionality(0);

//获得图层的描述

ESRI.ArcGIS.ADF.ArcGISServer.MapDescription mapDescription = mf.MapDescription;

//把屏幕上的点转换为ADF点

ESRI.ArcGIS.ADF.Web.Geometry.Point adf_map_point = ESRI.ArcGIS.ADF.Web.Geometry.Point.ToMapPoint(screen_point, mapctrl.Extent, mf.DisplaySettings.ImageDescriptor.Width, mf.DisplaySettings.ImageDescriptor.Height);

//定义点对象

PointN ags_map_point = ESRI.ArcGIS.ADF.Web.DataSources.ArcGISServer.Converter.FromAdfPoint(adf_map_point);

//设置点的颜色

ESRI.ArcGIS.ADF.ArcGISServer.RgbColor rgb = new ESRI.ArcGIS.ADF.ArcGISServer.RgbColor();

rgb.Red = 0;

rgb.Green = 255;

rgb.Blue = 0;

rgb.AlphaValue = 255;

//设置点的标识符

ESRI.ArcGIS.ADF.ArcGISServer.SimpleMarkerSymbol sms = new ESRI.ArcGIS.ADF.ArcGISServer.SimpleMarkerSymbol();

sms.Style = ESRI.ArcGIS.ADF.ArcGISServer.esriSimpleMarkerStyle.esriSMSDiamond;

sms.Color = rgb;

sms.Size = 20.0;

//设置点

ESRI.ArcGIS.ADF.ArcGISServer.MarkerElement marker = new ESRI.ArcGIS.ADF.ArcGISServer.MarkerElement();

marker.Symbol = sms;

marker.Point = ags_map_point;

if (mapDescription.CustomGraphics != null)

{

//获得该图层上的所有对象

GraphicElement[] oldges = mapDescription.CustomGraphics;

//对象的个数

int cnt = oldges.Length;

//对象个数加一,并把新的对象(点)放进去

GraphicElement[] newges = new GraphicElement[cnt + 1];

oldges.CopyTo(newges, 0);

newges[cnt] = marker;

mapDescription.CustomGraphics = newges;

}

else

{

GraphicElement[] ges = new GraphicElement[1];

ges[0] = marker;

mapDescription.CustomGraphics = ges;

}

mapctrl.Refresh();

}

}

这是一个在图层中添加点的例子,添加线段 图形和文字的代码基本上和这差不错,

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhangjie_xiaoke/archive/2008/03/05/2150725.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: