【ArcGIS for SivlerLight api(3)】基础图层增删改查

1.基础底图通常使用TiledLayer或者ArcGISDynamicLayer。

本质上都是在本地加载栅格图片。后台生成策略不同而已。从Vs2010的控件栏上拖过来的Map控件默认添加的底图是Esri的:
    <esri:ArcGISTiledMapServiceLayer Url="http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer" />
如果使用代码在初始化的时候可以这么写:
    ArcGISTiledMapServiceLayer tiledLayer = new ArcGISTiledMapServiceLayer() {
                Url = "http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer",
                ID="tiledLayer"
            };
 

2.绘制图层: GraphicLayer是最容易出现交互操作的图层。

在这上面可以添加点、线、面。三种不同的图形需要不同的符号来渲染。不同的符号系统需要使用代码,不过SilverLight提供了一种
更为简单易见的形式:使用XML配置。如下:
        <Grid.Resources>
            <esri:SimpleMarkerSymbol x:Key="BlackMarkerSymbol" Color="Black" Style="Cross" Size="12" />
            <esri:PictureMarkerSymbol x:Key="GlobePictureSymbol" OffsetX="8" OffsetY="8" Source="/Assets/images/globe-16x16.png" /> 
            <esri:SimpleLineSymbol x:Key="DefaultLineSymbol" Color="Green" Style="DashDot" Width="4" />
            <esri:SimpleFillSymbol x:Key="DefaultFillSymbol" Fill="Green" BorderBrush="Blue" BorderThickness="3" />
        </Grid.Resources>
 
节点<Grid.Resources>是指明为资源文件,之下放置了实例化的各个Symbol组件。使用x:Key来标识。接下来看如何解析该资源:
1             Symbol makersymbol = LayoutRoot.Resources["BlackMarkerSymbol"] as Symbol;
2             marker.Style = SimpleMarkerSymbol.SimpleMarkerStyle.Square;
3             graphic.Symbol = makersymbol;
4             graphic.Geometry = e.Geometry;
5             graphicLayer.Graphics.Add(graphic);

3.事件操作

 交互操作免不了有各种事件实现。有些事件是可以通过vs的事件钩子实现,例如按钮点击事件。有些就需要另外一种策略实现:事件订阅也就是eventHandler。这是一种将方法封装成事件处理程序的方式
每一个定义了事件的类都可以用+=来添加相应的evenHandler来处理。如:
       
 1   void initGraphic()
 2         {
 3             drawable = new Draw(map1);
 4             drawable.DrawMode = DrawMode.Point;
 5             drawable.DrawComplete += new EventHandler<DrawEventArgs>(drawable_DrawComplete);
 6         }
 7         void drawable_DrawComplete(object sender, DrawEventArgs e)
 8         {
 9             Graphic graphic = new Graphic();
10             SimpleMarkerSymbol marker = new SimpleMarkerSymbol();
11             marker.Size = 10;
12             Symbol makersymbol = LayoutRoot.Resources["BlackMarkerSymbol"] as Symbol;
13             marker.Style = SimpleMarkerSymbol.SimpleMarkerStyle.Square;
14             graphic.Symbol = makersymbol;
15             graphic.Geometry = e.Geometry;
16             graphicLayer.Graphics.Add(graphic);
17         }
纸上得来终觉浅,绝知此事要躬行
原文地址:https://www.cnblogs.com/d2ee/p/3616279.html