ArcGIS.Server.9.2.DotNet在ElementGraphicsLayer画点、线、折线、面、圆、矩形的代码
生活随笔
收集整理的這篇文章主要介紹了
ArcGIS.Server.9.2.DotNet在ElementGraphicsLayer画点、线、折线、面、圆、矩形的代码
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
ArcGIS.Server.9.2.DotNet在ElementGraphicsLayer畫點、線、折線、面、圓、矩形的代碼:
??1public?class?AddTool:IMapServerToolAction????2????{
??3
??4
??5????????public?void?ServerAction(ESRI.ArcGIS.ADF.Web.UI.WebControls.ToolEventArgs?args)
??6????????{
??7????????????//獲取map控件
??8????????????ESRI.ArcGIS.ADF.Web.UI.WebControls.Map?adfMap?=?(ESRI.ArcGIS.ADF.Web.UI.WebControls.Map)args.Control;
??9????????????ESRI.ArcGIS.ADF.Web.DataSources.Graphics.MapFunctionality?adfGraphicsMapFunctionality?=?null;
?10
?11????????????if?(args?is?PointEventArgs)
?12????????????{
?13????????????????//轉(zhuǎn)成點
?14????????????????PointEventArgs?pointEventArgs?=?(PointEventArgs)args;
?15????????????????//屏幕點
?16????????????????System.Drawing.Point?screenPoint?=?pointEventArgs.ScreenPoint;
?17????????????????//屏幕坐標(biāo)轉(zhuǎn)成地理坐標(biāo)
?18????????????????ESRI.ArcGIS.ADF.Web.Geometry.Point?adfPoint?=?ESRI.ArcGIS.ADF.Web.Geometry.Point.ToMapPoint(screenPoint.X,?screenPoint.Y,?adfMap.GetTransformationParams(ESRI.ArcGIS.ADF.Web.Geometry.TransformationDirection.ToMap));
?19????????????????
?20????????????????//MapFunctionality
?21????????????????foreach?(ESRI.ArcGIS.ADF.Web.DataSources.IMapFunctionality?mapFunctionality?in?adfMap.GetFunctionalities())
?22????????????????{
?23????????????????????//當(dāng)Resource為ADFGraphicsResource,ADFGraphicsResource為GraphicsLayer,?保存在內(nèi)存中用顯示臨時圖層
?24????????????????????if?(mapFunctionality.Resource.Name?==?"GraphicsResource")
?25????????????????????{
?26????????????????????????adfGraphicsMapFunctionality?=?(ESRI.ArcGIS.ADF.Web.DataSources.Graphics.MapFunctionality)mapFunctionality;
?27????????????????????????break;
?28????????????????????}
?29????????????????}
?30????????????????//從adfGraphicsMapFunctionality獲取名為Element?Graphics的DataTable
?31????????????????//ElementGraphicsLayers通常用來顯示圖形元素,例如顯示Map中被選擇的圖形元素。圖層并不用來存儲屬性,而可以存儲不同的圖形類型。
?32????????????????ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer?elementGraphicsLayer?=?null;
?33????????????????foreach?(System.Data.DataTable?dataTable?in?adfGraphicsMapFunctionality.GraphicsDataSet.Tables)
?34????????????????{
?35????????????????????if?(dataTable.TableName?==?"Element?Graphics")
?36????????????????????{
?37????????????????????????elementGraphicsLayer?=?(ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer)dataTable;
?38????????????????????????break;
?39????????????????????}
?40????????????????}
?41????????????????//如果名為Element?Graphics的DataTable為null,就新建Element?Graphics?DataTable添加到adfGraphicsMapFunctionality.GraphicsDataSet中,同時刷新Toc1顯示
?42????????????????if?(elementGraphicsLayer?==?null)
?43????????????????{
?44????????????????????elementGraphicsLayer?=?new?ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer();
?45????????????????????elementGraphicsLayer.TableName?=?"Element?Graphics";
?46????????????????????adfGraphicsMapFunctionality.GraphicsDataSet.Tables.Add(elementGraphicsLayer);
?47????????????????}
?48
?49????????????????//定義標(biāo)點樣式
?50????????????????ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleMarkerSymbol?simpleMarkerSymbol?=?new?ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleMarkerSymbol();
?51????????????????//simpleMarkerSymbol.Type?=?ESRI.ArcGIS.ADF.Web.Display.Symbol.MarkerSymbolType.Star;
?52????????????????simpleMarkerSymbol.Color?=?System.Drawing.Color.Green;
?53????????????????simpleMarkerSymbol.Width?=?10;
?54
?55????????????????//定義標(biāo)點選中樣式
?56????????????????ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleMarkerSymbol?simpleSelectedMarkerSymbol?=?new?ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleMarkerSymbol();
?57????????????????simpleSelectedMarkerSymbol.Color?=?System.Drawing.Color.Yellow;
?58????????????????simpleSelectedMarkerSymbol.Width?=?12;
?59????????????????simpleSelectedMarkerSymbol.Type?=?ESRI.ArcGIS.ADF.Web.Display.Symbol.MarkerSymbolType.Star;
?60
?61????????????????ESRI.ArcGIS.ADF.Web.Display.Graphics.GraphicElement?graphicElement?=?new?ESRI.ArcGIS.ADF.Web.Display.Graphics.GraphicElement(adfPoint,?simpleMarkerSymbol,?simpleSelectedMarkerSymbol);
?62????????????????//把標(biāo)點添加到elementGraphicsLayer
?63????????????????elementGraphicsLayer.Add(graphicElement);
?64????????????????
?65????????????}
?66????????????else?if(args?is?LineEventArgs)
?67????????????{
?68????????????????//轉(zhuǎn)成點
?69????????????????LineEventArgs?lineEventArgs?=?(LineEventArgs)args;
?70????????????????//屏幕點
?71????????????????//屏幕坐標(biāo)轉(zhuǎn)成地理坐標(biāo)
?72????????????????ESRI.ArcGIS.ADF.Web.Geometry.Point?adfPoint1?=?ESRI.ArcGIS.ADF.Web.Geometry.Point.ToMapPoint(lineEventArgs.BeginPoint.X,?lineEventArgs.BeginPoint.Y,?adfMap.GetTransformationParams(ESRI.ArcGIS.ADF.Web.Geometry.TransformationDirection.ToMap));
?73????????????????//屏幕坐標(biāo)轉(zhuǎn)成地理坐標(biāo)
?74????????????????ESRI.ArcGIS.ADF.Web.Geometry.Point?adfPoint2?=?ESRI.ArcGIS.ADF.Web.Geometry.Point.ToMapPoint(lineEventArgs.EndPoint.X,?lineEventArgs.EndPoint.Y,?adfMap.GetTransformationParams(ESRI.ArcGIS.ADF.Web.Geometry.TransformationDirection.ToMap));
?75????????????????ESRI.ArcGIS.ADF.Web.Geometry.Path?pa=new?ESRI.ArcGIS.ADF.Web.Geometry.Path();
?76????????????????pa.Points.Add(adfPoint1);
?77????????????????pa.Points.Add(adfPoint2);
?78????????????????ESRI.ArcGIS.ADF.Web.Geometry.Polyline?Line?=?new?ESRI.ArcGIS.ADF.Web.Geometry.Polyline();
?79????????????????Line.Paths.Add(pa);
?80
?81????????????????//MapFunctionality
?82????????????????foreach?(ESRI.ArcGIS.ADF.Web.DataSources.IMapFunctionality?mapFunctionality?in?adfMap.GetFunctionalities())
?83????????????????{
?84????????????????????//當(dāng)Resource為ADFGraphicsResource,ADFGraphicsResource為GraphicsLayer,?保存在內(nèi)存中用顯示臨時圖層
?85????????????????????if?(mapFunctionality.Resource.Name?==?"GraphicsResource")
?86????????????????????{
?87????????????????????????adfGraphicsMapFunctionality?=?(ESRI.ArcGIS.ADF.Web.DataSources.Graphics.MapFunctionality)mapFunctionality;
?88????????????????????????break;
?89????????????????????}
?90????????????????}
?91????????????????//從adfGraphicsMapFunctionality獲取名為Element?Graphics的DataTable
?92????????????????//ElementGraphicsLayers通常用來顯示圖形元素,例如顯示Map中被選擇的圖形元素。圖層并不用來存儲屬性,而可以存儲不同的圖形類型。
?93????????????????ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer?elementGraphicsLayer?=?null;
?94????????????????foreach?(System.Data.DataTable?dataTable?in?adfGraphicsMapFunctionality.GraphicsDataSet.Tables)
?95????????????????{
?96????????????????????if?(dataTable.TableName?==?"Element?Graphics")
?97????????????????????{
?98????????????????????????elementGraphicsLayer?=?(ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer)dataTable;
?99????????????????????????break;
100????????????????????}
101????????????????}
102????????????????//如果名為Element?Graphics的DataTable為null,就新建Element?Graphics?DataTable添加到adfGraphicsMapFunctionality.GraphicsDataSet中,同時刷新Toc1顯示
103????????????????if?(elementGraphicsLayer?==?null)
104????????????????{
105????????????????????elementGraphicsLayer?=?new?ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer();
106????????????????????elementGraphicsLayer.TableName?=?"Element?Graphics";
107????????????????????adfGraphicsMapFunctionality.GraphicsDataSet.Tables.Add(elementGraphicsLayer);
108????????????????}
109
110????????????????//定義標(biāo)點樣式
111????????????????ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleLineSymbol?simpleMarkerSymbol?=?new?ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleLineSymbol();
112????????????????//simpleMarkerSymbol.Type?=?ESRI.ArcGIS.ADF.Web.Display.Symbol.MarkerSymbolType.Star;
113????????????????simpleMarkerSymbol.Color?=?System.Drawing.Color.Red;
114????????????????simpleMarkerSymbol.Width?=?3;
115????????????????simpleMarkerSymbol.Type?=?ESRI.ArcGIS.ADF.Web.Display.Symbol.LineType.Dash;
116????????????????//定義標(biāo)點選中樣式
117????????????????ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleLineSymbol?simpleSelectedMarkerSymbol?=?new?ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleLineSymbol();
118????????????????simpleSelectedMarkerSymbol.Color?=?System.Drawing.Color.Yellow;
119????????????????simpleSelectedMarkerSymbol.Width?=?3;
120????????????????//simpleSelectedMarkerSymbol.Type?=?ESRI.ArcGIS.ADF.Web.Display.Symbol.MarkerSymbolType.Star;
121
122????????????????ESRI.ArcGIS.ADF.Web.Display.Graphics.GraphicElement?graphicElement?=?new?ESRI.ArcGIS.ADF.Web.Display.Graphics.GraphicElement(Line,?simpleMarkerSymbol,?simpleSelectedMarkerSymbol);
123????????????????//把標(biāo)點添加到elementGraphicsLayer
124????????????????elementGraphicsLayer.Add(graphicElement);
125????????????????
126????????????}
127????????????else?if?(args?is?PolylineEventArgs)
128????????????{
129????????????????PolylineEventArgs?lineEventArgs?=?(PolylineEventArgs)args;
130????????????????ESRI.ArcGIS.ADF.Web.Geometry.Path?pa?=?new?ESRI.ArcGIS.ADF.Web.Geometry.Path();
131????????????????for?(int?i?=?0;?i?<=?lineEventArgs.Vectors.Length?-?1;?i++)
132????????????????{
133????????????????????ESRI.ArcGIS.ADF.Web.Geometry.Point?point?=?ESRI.ArcGIS.ADF.Web.Geometry.Point.ToMapPoint(lineEventArgs.Vectors[i].X,?lineEventArgs.Vectors[i].Y,?adfMap.GetTransformationParams(ESRI.ArcGIS.ADF.Web.Geometry.TransformationDirection.ToMap));
134????????????????????pa.Points.Add(point);
135????????????????}
136????????????????ESRI.ArcGIS.ADF.Web.Geometry.Polyline?Line?=?new?ESRI.ArcGIS.ADF.Web.Geometry.Polyline();
137????????????????Line.Paths.Add(pa);
138
139????????????????//MapFunctionality
140????????????????foreach?(ESRI.ArcGIS.ADF.Web.DataSources.IMapFunctionality?mapFunctionality?in?adfMap.GetFunctionalities())
141????????????????{
142????????????????????//當(dāng)Resource為ADFGraphicsResource,ADFGraphicsResource為GraphicsLayer,?保存在內(nèi)存中用顯示臨時圖層
143????????????????????if?(mapFunctionality.Resource.Name?==?"GraphicsResource")
144????????????????????{
145????????????????????????adfGraphicsMapFunctionality?=?(ESRI.ArcGIS.ADF.Web.DataSources.Graphics.MapFunctionality)mapFunctionality;
146????????????????????????break;
147????????????????????}
148????????????????}
149????????????????//從adfGraphicsMapFunctionality獲取名為Element?Graphics的DataTable
150????????????????//ElementGraphicsLayers通常用來顯示圖形元素,例如顯示Map中被選擇的圖形元素。圖層并不用來存儲屬性,而可以存儲不同的圖形類型。
151????????????????ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer?elementGraphicsLayer?=?null;
152????????????????foreach?(System.Data.DataTable?dataTable?in?adfGraphicsMapFunctionality.GraphicsDataSet.Tables)
153????????????????{
154????????????????????if?(dataTable.TableName?==?"Element?Graphics")
155????????????????????{
156????????????????????????elementGraphicsLayer?=?(ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer)dataTable;
157????????????????????????break;
158????????????????????}
159????????????????}
160????????????????//如果名為Element?Graphics的DataTable為null,就新建Element?Graphics?DataTable添加到adfGraphicsMapFunctionality.GraphicsDataSet中,同時刷新Toc1顯示
161????????????????if?(elementGraphicsLayer?==?null)
162????????????????{
163????????????????????elementGraphicsLayer?=?new?ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer();
164????????????????????elementGraphicsLayer.TableName?=?"Element?Graphics";
165????????????????????adfGraphicsMapFunctionality.GraphicsDataSet.Tables.Add(elementGraphicsLayer);
166????????????????}
167
168????????????????//定義標(biāo)點樣式
169????????????????ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleLineSymbol?simpleMarkerSymbol?=?new?ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleLineSymbol();
170????????????????//simpleMarkerSymbol.Type?=?ESRI.ArcGIS.ADF.Web.Display.Symbol.MarkerSymbolType.Star;
171????????????????simpleMarkerSymbol.Color?=?System.Drawing.Color.Red;
172????????????????simpleMarkerSymbol.Width?=?3;
173????????????????simpleMarkerSymbol.Type?=?ESRI.ArcGIS.ADF.Web.Display.Symbol.LineType.Dash;
174????????????????//定義標(biāo)點選中樣式
175????????????????ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleLineSymbol?simpleSelectedMarkerSymbol?=?new?ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleLineSymbol();
176????????????????simpleSelectedMarkerSymbol.Color?=?System.Drawing.Color.Yellow;
177????????????????simpleSelectedMarkerSymbol.Width?=?3;
178????????????????//simpleSelectedMarkerSymbol.Type?=?ESRI.ArcGIS.ADF.Web.Display.Symbol.MarkerSymbolType.Star;
179
180????????????????ESRI.ArcGIS.ADF.Web.Display.Graphics.GraphicElement?graphicElement?=?new?ESRI.ArcGIS.ADF.Web.Display.Graphics.GraphicElement(Line,?simpleMarkerSymbol,?simpleSelectedMarkerSymbol);
181????????????????//把標(biāo)點添加到elementGraphicsLayer
182????????????????elementGraphicsLayer.Add(graphicElement);
183????????????}
184????????????else?if?(args?is?PolygonEventArgs)
185????????????{
186????????????????PolygonEventArgs?polygonEventArgs?=?(PolygonEventArgs)args;
187????????????????ESRI.ArcGIS.ADF.Web.Geometry.Ring?points?=?new?ESRI.ArcGIS.ADF.Web.Geometry.Ring();
188????????????????for?(int?i?=?0;?i?<=?polygonEventArgs.Vectors.Length?-?1;?i++)
189????????????????{
190????????????????????ESRI.ArcGIS.ADF.Web.Geometry.Point?point?=?ESRI.ArcGIS.ADF.Web.Geometry.Point.ToMapPoint(polygonEventArgs.Vectors[i].X,?polygonEventArgs.Vectors[i].Y,?adfMap.GetTransformationParams(ESRI.ArcGIS.ADF.Web.Geometry.TransformationDirection.ToMap));
191????????????????????points.Points.Add(point);
192????????????????}
193????????????????ESRI.ArcGIS.ADF.Web.Geometry.Polygon?polygon?=?new?ESRI.ArcGIS.ADF.Web.Geometry.Polygon();
194????????????????polygon.Rings.Add(points);
195
196????????????????//MapFunctionality
197????????????????foreach?(ESRI.ArcGIS.ADF.Web.DataSources.IMapFunctionality?mapFunctionality?in?adfMap.GetFunctionalities())
198????????????????{
199????????????????????//當(dāng)Resource為ADFGraphicsResource,ADFGraphicsResource為GraphicsLayer,?保存在內(nèi)存中用顯示臨時圖層
200????????????????????if?(mapFunctionality.Resource.Name?==?"GraphicsResource")
201????????????????????{
202????????????????????????adfGraphicsMapFunctionality?=?(ESRI.ArcGIS.ADF.Web.DataSources.Graphics.MapFunctionality)mapFunctionality;
203????????????????????????break;
204????????????????????}
205????????????????}
206????????????????//從adfGraphicsMapFunctionality獲取名為Element?Graphics的DataTable
207????????????????//ElementGraphicsLayers通常用來顯示圖形元素,例如顯示Map中被選擇的圖形元素。圖層并不用來存儲屬性,而可以存儲不同的圖形類型。
208????????????????ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer?elementGraphicsLayer?=?null;
209????????????????foreach?(System.Data.DataTable?dataTable?in?adfGraphicsMapFunctionality.GraphicsDataSet.Tables)
210????????????????{
211????????????????????if?(dataTable.TableName?==?"Element?Graphics")
212????????????????????{
213????????????????????????elementGraphicsLayer?=?(ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer)dataTable;
214????????????????????????break;
215????????????????????}
216????????????????}
217????????????????//如果名為Element?Graphics的DataTable為null,就新建Element?Graphics?DataTable添加到adfGraphicsMapFunctionality.GraphicsDataSet中,同時刷新Toc1顯示
218????????????????if?(elementGraphicsLayer?==?null)
219????????????????{
220????????????????????elementGraphicsLayer?=?new?ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer();
221????????????????????elementGraphicsLayer.TableName?=?"Element?Graphics";
222????????????????????adfGraphicsMapFunctionality.GraphicsDataSet.Tables.Add(elementGraphicsLayer);
223????????????????}
224
225????????????????ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleFillSymbol?simpleMarkerSymbol?=?new?ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleFillSymbol();
226????????????????simpleMarkerSymbol.Color?=?System.Drawing.Color.Yellow;
227????????????????simpleMarkerSymbol.FillType=?ESRI.ArcGIS.ADF.Web.Display.Symbol.PolygonFillType.DiagCross;
228
229????????????????ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleFillSymbol?simpleSelectedMarkerSymbol?=?new?ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleFillSymbol();
230????????????????ESRI.ArcGIS.ADF.Web.Display.Graphics.GraphicElement?graphicElement?=?new?ESRI.ArcGIS.ADF.Web.Display.Graphics.GraphicElement(polygon,?simpleMarkerSymbol,?simpleSelectedMarkerSymbol);
231????????????????//把標(biāo)點添加到elementGraphicsLayer
232????????????????elementGraphicsLayer.Add(graphicElement);
233???????
234????????????}
235????????????else?if?(args?is?CircleEventArgs)
236????????????{
237????????????????CircleEventArgs?circleEventArgs?=?(CircleEventArgs)args;
238????????????????
239????????????????ESRI.ArcGIS.ADF.Web.Geometry.PointCollection?pc?=?new?ESRI.ArcGIS.ADF.Web.Geometry.PointCollection();
240????????????????double?degree;
241????????????????double?rad??=?circleEventArgs.Radius;
242????????????????for?(int?i?=?0;?i?<?359;?i++)
243????????????????{?
244????????????????????degree?=?i?*?(Math.PI?/?180);
245????????????????????double?x?=?circleEventArgs.CenterPoint.X?+?Math.Cos(degree)?*?rad;
246????????????????????double?y?=?circleEventArgs.CenterPoint.Y?+?Math.Sin(degree)?*?rad;
247????????????????????ESRI.ArcGIS.ADF.Web.Geometry.Point?nPoint?=?ESRI.ArcGIS.ADF.Web.Geometry.Point.ToMapPoint((int)Math.Round(x),(int)Math.Round(y),?adfMap.GetTransformationParams(ESRI.ArcGIS.ADF.Web.Geometry.TransformationDirection.ToMap));
248????????????????????pc.Add(nPoint);
249????????????????}
250????????????????ESRI.ArcGIS.ADF.Web.Geometry.Ring?ring?=?new?ESRI.ArcGIS.ADF.Web.Geometry.Ring();
251????????????????ring.Points?=?pc;
252????????????????ESRI.ArcGIS.ADF.Web.Geometry.RingCollection?rings?=?new?ESRI.ArcGIS.ADF.Web.Geometry.RingCollection();
253????????????????rings.Add(ring);
254????????????????ESRI.ArcGIS.ADF.Web.Geometry.Polygon?polygon?=?new?ESRI.ArcGIS.ADF.Web.Geometry.Polygon();
255????????????????polygon.Rings?=?rings;
256
257????????????????//MapFunctionality
258????????????????foreach?(ESRI.ArcGIS.ADF.Web.DataSources.IMapFunctionality?mapFunctionality?in?adfMap.GetFunctionalities())
259????????????????{
260????????????????????//當(dāng)Resource為ADFGraphicsResource,ADFGraphicsResource為GraphicsLayer,?保存在內(nèi)存中用顯示臨時圖層
261????????????????????if?(mapFunctionality.Resource.Name?==?"GraphicsResource")
262????????????????????{
263????????????????????????adfGraphicsMapFunctionality?=?(ESRI.ArcGIS.ADF.Web.DataSources.Graphics.MapFunctionality)mapFunctionality;
264????????????????????????break;
265????????????????????}
266????????????????}
267????????????????//從adfGraphicsMapFunctionality獲取名為Element?Graphics的DataTable
268????????????????//ElementGraphicsLayers通常用來顯示圖形元素,例如顯示Map中被選擇的圖形元素。圖層并不用來存儲屬性,而可以存儲不同的圖形類型。
269????????????????ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer?elementGraphicsLayer?=?null;
270????????????????foreach?(System.Data.DataTable?dataTable?in?adfGraphicsMapFunctionality.GraphicsDataSet.Tables)
271????????????????{
272????????????????????if?(dataTable.TableName?==?"Element?Graphics")
273????????????????????{
274????????????????????????elementGraphicsLayer?=?(ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer)dataTable;
275????????????????????????break;
276????????????????????}
277????????????????}
278????????????????//如果名為Element?Graphics的DataTable為null,就新建Element?Graphics?DataTable添加到adfGraphicsMapFunctionality.GraphicsDataSet中,同時刷新Toc1顯示
279????????????????if?(elementGraphicsLayer?==?null)
280????????????????{
281????????????????????elementGraphicsLayer?=?new?ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer();
282????????????????????elementGraphicsLayer.TableName?=?"Element?Graphics";
283????????????????????adfGraphicsMapFunctionality.GraphicsDataSet.Tables.Add(elementGraphicsLayer);
284????????????????}
285
286????????????????ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleFillSymbol?simpleMarkerSymbol?=?new?ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleFillSymbol();
287????????????????simpleMarkerSymbol.Color?=?System.Drawing.Color.Yellow;
288????????????????simpleMarkerSymbol.FillType?=?ESRI.ArcGIS.ADF.Web.Display.Symbol.PolygonFillType.DiagCross;
289
290????????????????ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleFillSymbol?simpleSelectedMarkerSymbol?=?new?ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleFillSymbol();
291????????????????ESRI.ArcGIS.ADF.Web.Display.Graphics.GraphicElement?graphicElement?=?new?ESRI.ArcGIS.ADF.Web.Display.Graphics.GraphicElement(polygon,?simpleMarkerSymbol,?simpleSelectedMarkerSymbol);
292????????????????//把標(biāo)點添加到elementGraphicsLayer
293????????????????elementGraphicsLayer.Add(graphicElement);
294
295????????????}
296????????????else?if(args?is?RectangleEventArgs)
297????????????{
298????????????????RectangleEventArgs?rectargs?=?(RectangleEventArgs)args;
299????????????????//矩形
300????????????????System.Drawing.Rectangle?myrect?=?rectargs.ScreenExtent;
301????????????????//矩形左下定點坐標(biāo)轉(zhuǎn)換成地理坐標(biāo)
302????????????????ESRI.ArcGIS.ADF.Web.Geometry.Point?minpnt?=?ESRI.ArcGIS.ADF.Web.Geometry.Point.ToMapPoint(myrect.Left,?myrect.Bottom,?adfMap.GetTransformationParams(ESRI.ArcGIS.ADF.Web.Geometry.TransformationDirection.ToMap));
303????????????????//矩形右上定點坐標(biāo)轉(zhuǎn)換成地理坐標(biāo)
304????????????????ESRI.ArcGIS.ADF.Web.Geometry.Point?maxpnt?=?ESRI.ArcGIS.ADF.Web.Geometry.Point.ToMapPoint(myrect.Right,?myrect.Top,?adfMap.GetTransformationParams(ESRI.ArcGIS.ADF.Web.Geometry.TransformationDirection.ToMap));
305????????????????//
306????????????????ESRI.ArcGIS.ADF.Web.Geometry.Envelope?mappoly?=?new?ESRI.ArcGIS.ADF.Web.Geometry.Envelope(minpnt,?maxpnt);
307
308????????????????//MapFunctionality
309????????????????foreach?(ESRI.ArcGIS.ADF.Web.DataSources.IMapFunctionality?mapFunctionality?in?adfMap.GetFunctionalities())
310????????????????{
311????????????????????//當(dāng)Resource為ADFGraphicsResource,ADFGraphicsResource為GraphicsLayer,?保存在內(nèi)存中用顯示臨時圖層
312????????????????????if?(mapFunctionality.Resource.Name?==?"GraphicsResource")
313????????????????????{
314????????????????????????adfGraphicsMapFunctionality?=?(ESRI.ArcGIS.ADF.Web.DataSources.Graphics.MapFunctionality)mapFunctionality;
315????????????????????????break;
316????????????????????}
317????????????????}
318????????????????//從adfGraphicsMapFunctionality獲取名為Element?Graphics的DataTable
319????????????????//ElementGraphicsLayers通常用來顯示圖形元素,例如顯示Map中被選擇的圖形元素。圖層并不用來存儲屬性,而可以存儲不同的圖形類型。
320????????????????ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer?elementGraphicsLayer?=?null;
321????????????????foreach?(System.Data.DataTable?dataTable?in?adfGraphicsMapFunctionality.GraphicsDataSet.Tables)
322????????????????{
323????????????????????if?(dataTable.TableName?==?"Element?Graphics")
324????????????????????{
325????????????????????????elementGraphicsLayer?=?(ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer)dataTable;
326????????????????????????break;
327????????????????????}
328????????????????}
329????????????????//如果名為Element?Graphics的DataTable為null,就新建Element?Graphics?DataTable添加到adfGraphicsMapFunctionality.GraphicsDataSet中,同時刷新Toc1顯示
330????????????????if?(elementGraphicsLayer?==?null)
331????????????????{
332????????????????????elementGraphicsLayer?=?new?ESRI.ArcGIS.ADF.Web.Display.Graphics.ElementGraphicsLayer();
333????????????????????elementGraphicsLayer.TableName?=?"Element?Graphics";
334????????????????????adfGraphicsMapFunctionality.GraphicsDataSet.Tables.Add(elementGraphicsLayer);
335????????????????}
336
337????????????????ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleFillSymbol?simpleMarkerSymbol?=?new?ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleFillSymbol();
338????????????????simpleMarkerSymbol.Color?=?System.Drawing.Color.Yellow;
339????????????????simpleMarkerSymbol.FillType?=?ESRI.ArcGIS.ADF.Web.Display.Symbol.PolygonFillType.DiagCross;
340
341????????????????ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleFillSymbol?simpleSelectedMarkerSymbol?=?new?ESRI.ArcGIS.ADF.Web.Display.Symbol.SimpleFillSymbol();
342????????????????ESRI.ArcGIS.ADF.Web.Display.Graphics.GraphicElement?graphicElement?=?new?ESRI.ArcGIS.ADF.Web.Display.Graphics.GraphicElement(mappoly,?simpleMarkerSymbol,?simpleSelectedMarkerSymbol);
343????????????????//把標(biāo)點添加到elementGraphicsLayer
344????????????????elementGraphicsLayer.Add(graphicElement);
345
346????????????}
347
348????????????//刷新顯示
349????????????if?(adfMap.ImageBlendingMode?==?ImageBlendingMode.WebTier)
350????????????{
351????????????????//整個地圖控件刷新
352????????????????adfMap.Refresh();
353????????????}
354????????????else
355????????????{
356????????????????//只刷新部分Resource
357????????????????adfMap.RefreshResource(adfGraphicsMapFunctionality.Resource.Name);
358????????????}
359????????}
360
361????}
總結(jié)
以上是生活随笔為你收集整理的ArcGIS.Server.9.2.DotNet在ElementGraphicsLayer画点、线、折线、面、圆、矩形的代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: J2SE理解之一:声明和访问控制
- 下一篇: Hacking techniques a