zoukankan      html  css  js  c++  java
  • 【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         }
    纸上得来终觉浅,绝知此事要躬行
  • 相关阅读:
    RequireJS 模块化加载框架使用
    MySQL数据类型(最大值 和 最小值)
    utf-8的中文是一个字符占几个字节
    spring的事务是什么?与数据库的事务是否一样
    事务和锁机制是什么关系? 开启事务就自动加锁了吗?
    关于数据库主键和外键
    浅谈Mysql共享锁、排他锁、悲观锁、乐观锁及其使用场景
    TCP/IP协议
    分库分表分区需要考虑的问题及方案
    Redis(十一):Redis的事务功能详解
  • 原文地址:https://www.cnblogs.com/d2ee/p/3616279.html
Copyright © 2011-2022 走看看