原文:ArcGIS API for Silverlight动态标绘的实现

1、下载2个dll文件,分别是:

ArcGISPlotSilverlightAPI.dll 和 Matrix.dll

其下载地址为:http://download.csdn.net/detail/taomanman/9212163

2、在Silverlight项目中添加上面2个dll引用,如下图所示:

3、核心及调用代码如下所示:

<UserControl x:Class="SLPlotMap.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
xmlns:layer="clr-namespace:MapClient.CommonClass"
xmlns:esri="http://schemas.esri.com/arcgis/client/2009">
<Grid x:Name="LayoutRoot" Background="White">
<esri:Map Background="White" Name="myMap" WrapAround="True">
<esri:Map.Layers>
<esri:LayerCollection>
<esri:ArcGISTiledMapServiceLayer Url="http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer" />
</esri:LayerCollection>
</esri:Map.Layers>
</esri:Map>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="40" />
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal" Margin="2">
<Button Click="simpleArrow_Click">
简单箭头
</Button>
<Button Click="TailedArrow_Click">
尾箭头
</Button>
<Button Click="StraightArrow_Click">
直箭头
</Button>
<Button Click="CustomArrow_Click">
自定义箭头
</Button>
<Button Click="CustomTailedArrow_Click">
自定义尾箭头
</Button>
<Button Click="DoubleArrow_Click">
双箭头
</Button>
<Button Click="AssemblyArea_Click">
装配区
</Button>
<Button Click="CurveFlag_Click">
曲线旗
</Button>
<Button Click="RectFlag_Click">
矩形旗
</Button>
<Button Click="TriangleFlag_Click">
三角旗
</Button>
<Button Click="Circle_Click">

</Button>
<Button Click="Finish_Click">
结束
</Button>
<Button Click="StartEdit_Click">
开始编辑
</Button>
<Button Click="StopEdit_Click">
停止编辑
</Button>
</StackPanel>
</Grid>
</Grid>
</UserControl>

using System;
using System.Collections.Generic;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using ESRI.ArcGIS.Client;
using ArcGISPlotSilverlightAPI;
using Matrix.Xmpp.Client;
using ESRI.ArcGIS.Client.Geometry;
using ESRI.ArcGIS.Client.Symbols;
using ESRI.ArcGIS.Client.Geometry;
using ESRI.ArcGIS.Client.Symbols;
using Matrix.Xmpp;
using Matrix.Net;
using MapClient.CommonClass;
using System.Windows.Media.Imaging;
using System.IO;
using SLPlotMap.CommonClass; namespace SLPlotMap
{
public partial class MainPage : UserControl
{
private AssemblyArea _aArrow;
private SimpleArrow _arraw;
private CustomArrow _cArrow;
private CurveFlag _cFlag;
private Circle _circle;
private CustomTailedArrow _ctArrow;
private DoubleArrow _dArrow;
private EditGeometry _editGeometry;
private GraphicsLayer _gGraphicsLayer1;
private bool _isEdit;
private bool _isFinish;
private PlotDraw _plotDraw;
private long _pointCount;
private RectFlag _rFlag;
private StraightArrow _sArrow;
private TailedArrow _tArraw;
private TriangleFlag _tFlag;
private XmppClient _xmppClient;
private Graphic selectedPointGraphic; public MainPage()
{
InitializeComponent();
this.Init();
} private void _gGraphicsLayer_MouseLeftButtonDown(object sender, GraphicMouseButtonEventArgs e)
{
if (this._isEdit)
{
e.Handled = true;
if (e.Graphic.Geometry is MapPoint)
{
e.Graphic.Selected = true;
this.selectedPointGraphic = e.Graphic;
}
else
{
this._editGeometry.StartEdit(e.Graphic);
}
}
} private void _plotDraw_DrawEnd(ESRI.ArcGIS.Client.Geometry.Polygon polygon)
{
SimpleFillSymbol symbol = new SimpleFillSymbol
{
Fill = new SolidColorBrush(Color.FromArgb(0x9b, 0xff, 0, 0))
};
Graphic item = new Graphic
{
Geometry = polygon,
Symbol = symbol
};
this._gGraphicsLayer1.Graphics.Add(item);
Message el = new Message
{
To = "lei@192.168.200.117",
Type = MessageType.chat,
Body = polygon.ToString()
};
this._xmppClient.Send(el);
} private void _xmppClient_OnRosterEnd(object sender, EventArgs e)
{
} private void AssemblyArea_Click(object sender, RoutedEventArgs e)
{
this._plotDraw.setPlotDrawMode(PlotDrawMode.AssemblyArea);
} private void Circle_Click(object sender, RoutedEventArgs e)
{
this._plotDraw.setPlotDrawMode(PlotDrawMode.Circle);
} private void CloseSession()
{
this._xmppClient.SendUnavailablePresence("Gone home from the office");
this._xmppClient.Close();
} private void Connect()
{
this._xmppClient.SetUsername("zbc");
this._xmppClient.SetXmppDomain("192.168.200.117");
this._xmppClient.Password = "zbc";
this._xmppClient.OnRosterEnd += new EventHandler<Matrix.EventArgs>(this._xmppClient_OnRosterEnd);
this._xmppClient.Port = 0x1466;
this._xmppClient.Transport = Transport.BOSH;
this._xmppClient.Uri = new Uri("http://192.168.200.117:8080/http-bind/");
} private void CurveFlag_Click(object sender, RoutedEventArgs e)
{
this._plotDraw.setPlotDrawMode(PlotDrawMode.CurveFlag);
} private void CustomArrow_Click(object sender, RoutedEventArgs e)
{
this._plotDraw.setPlotDrawMode(PlotDrawMode.CustomArrow);
} private void CustomTailedArrow_Click(object sender, RoutedEventArgs e)
{
this._plotDraw.setPlotDrawMode(PlotDrawMode.CustomTailedArrow);
} private void DoubleArrow_Click(object sender, RoutedEventArgs e)
{
this._plotDraw.setPlotDrawMode(PlotDrawMode.DoubleArrow);
} private void Finish_Click(object sender, RoutedEventArgs e)
{
this._plotDraw.setPlotDrawMode(PlotDrawMode.None);
} public void Init()
{
this._pointCount = 0L;
this._gGraphicsLayer1 = new GraphicsLayer();
this._isFinish = true;
this._xmppClient = new XmppClient();
this.Connect();
this._plotDraw = new PlotDraw(this.myMap);
this._plotDraw.DrawEnd += new PlotDraw.DrawEndEventHandler(this._plotDraw_DrawEnd);
EditGeometry geometry = new EditGeometry
{
Map = this.myMap,
IsEnabled = true,
EditVerticesEnabled = false
};
this._editGeometry = geometry;
this.myMap.Layers.Add(this._gGraphicsLayer1);
this._gGraphicsLayer1.MouseLeftButtonDown += new GraphicsLayer.MouseButtonEventHandler(this._gGraphicsLayer_MouseLeftButtonDown);
this._isEdit = false;
} private void RectFlag_Click(object sender, RoutedEventArgs e)
{
this._plotDraw.setPlotDrawMode(PlotDrawMode.RectFlag);
} private void simpleArrow_Click(object sender, RoutedEventArgs e)
{
this._plotDraw.setPlotDrawMode(PlotDrawMode.SimpleArrow);
} private void StartEdit_Click(object sender, RoutedEventArgs e)
{
this._isEdit = true;
this._plotDraw.setPlotDrawMode(PlotDrawMode.None);
} private void StopEdit_Click(object sender, RoutedEventArgs e)
{
this._isEdit = false;
} private void StraightArrow_Click(object sender, RoutedEventArgs e)
{
this._plotDraw.setPlotDrawMode(PlotDrawMode.StraightArrow);
} private void TailedArrow_Click(object sender, RoutedEventArgs e)
{
this._plotDraw.setPlotDrawMode(PlotDrawMode.TailedArrow);
} private void TriangleFlag_Click(object sender, RoutedEventArgs e)
{
this._plotDraw.setPlotDrawMode(PlotDrawMode.TriangleFlag);
}
}
}

===========================================================================

如果觉得对您有帮助,微信扫一扫支持一下:

ArcGIS API for Silverlight动态标绘的实现的更多相关文章

  1. 基于ArcGIS Flex API实现动态标绘(1.1)

    动态标绘API 1.1版本号.相较前一版本号1.0(点击进入).该版本号提供标绘符号的编辑功能. 编辑功能包含两种编辑状态:编辑控制点.对标绘符号进行旋转.八方向拉伸.平移. 编辑控制点例如以下图所看 ...

  2. 基于ArcGIS Flex API实现动态标绘(1.2)

    动态标绘API 1.2,相较前一版本号(点击进入),该版本号新增对基本标绘符号的支持,包含: 单点.多点.折线.手绘线.多边形.手绘多边形.矩形,并提供对应的编辑功能. 例如以下图所看到的,对多点的编 ...

  3. 使用Visifire+ArcGIS API for Silverlight实现Graphic信息的动态图表显示

    原文:使用Visifire+ArcGIS API for Silverlight实现Graphic信息的动态图表显示 首先来看一看实现的效果: PS:原始的程序中更新曲线数据时添加了过渡的效果,具体可 ...

  4. arcgis api for silverlight开发系列之二:缓存图层与动态图层及图层总结 .

    本文摘自:http://blog.csdn.net/leesmn/article/details/6916458(很优秀的博客)   作为ESRI的平台的一份子arcgis api for silve ...

  5. 动态标绘演示系统1.4.3(for ArcGIS Flex)

    标绘有API文档啦! 在线浏览 ------------------------------------------------------------------------------------ ...

  6. ArcGIS API for Silverlight 绘制降雨路径动画

    原文:ArcGIS API for Silverlight 绘制降雨路径动画 #region 降雨动画演示 2014-04-16 List<Graphic> graphics = new ...

  7. ArcGIS API for Silverlight之配准JPG图片地图文字倾斜解决方案

    原文:ArcGIS API for Silverlight之配准JPG图片地图文字倾斜解决方案 根据实际JPG图片进行配准后,发布的地图,利用ArcGIS API for Silverlight在网页 ...

  8. ArcGIS API for Silverlight 之ElementLayer使用及TextSymbol的模板使用

    原文:ArcGIS API for Silverlight 之ElementLayer使用及TextSymbol的模板使用 在开发中动态在地图上添加文字信息,可以使用TextSymbol添加文字 // ...

  9. ArcGIS API for Silverlight 调用GP服务加载等值线图层

    原文:ArcGIS API for Silverlight 调用GP服务加载等值线图层 第二篇.Silverlight客户端调用GP服务 利用ArcGIS API for Silverlight实现G ...

随机推荐

  1. emacs yasnippet

    首先安装emacs 然后下载yasnippet-bundle-0.6.1c.el.tgz解压 在~/.emacs.d/文件夹下新建一个文件plug,一般是新建一个plugins但是我到下面有这个文件夹 ...

  2. c# 纯代码方式创建快捷方式

    using System; using System.Collections.Generic; using System.Text; using Microsoft.Win32; using Syst ...

  3. python 获取类的属性

    如果不清楚一个对象是否拥有某个属性,可以使用内置函数hasattr 访问一个对象的属性的方法是通过特别属性__dict__,它是一个映射,将属性名称映射到属性值 为了调试方便,可以添加下面这个函数 d ...

  4. UOJ#35 后缀排序

    这是一道模板题. 读入一个长度为 n 的由小写英文字母组成的字符串,请把这个字符串的所有非空后缀按字典序从小到大排序,然后按顺序输出后缀的第一个字符在原串中的位置.位置编号为 1 到 n. 除此之外为 ...

  5. oracle中用SQL实现两个日期间的日期形成一个数据集

    比如输入2014-06-1 和 2014-07-1形成一个2014-06-1 2014-06-22014-06-3...2014-07-1 的数据集.   解决方法: select date'2014 ...

  6. Java导出Highcharts生成的图表为图片源码

    本文转载自:http://blog.csdn.net/dengsilinming/article/details/7352054 需要的jar包: 需要的js文件:(可以通过http://www.hi ...

  7. 安装phpunit

    按照网上的提示,将go-pear.phar和phpunit.phar都放到php.exe所在的目录.但是以管理员身份运行时,输入命令php PEAR/go-pear.phar或php -d phar. ...

  8. serv-u and hway3.0

    一个非常好用的su提权脚本,在支持php的环境下,目录可读可写,基本秒杀. <? //HWay && Serv-U by r00t //r00t@007team.net //ww ...

  9. FastDFS安装、配置、部署

    FastDFS是一个开源的,高性能的的分布式文件系统,他主要的功能包括:文件存储,同步和访问,设计基于高可用和负载均衡,FastDFS非常适用于基于文件服务的站点,例如图片分享和视频分享网站. Fas ...

  10. twitter storm 源码走读之5 -- worker进程内部消息传递处理和数据结构分析

    欢迎转载,转载请注明出处,徽沪一郎. 本文从外部消息在worker进程内部的转化,传递及处理过程入手,一步步分析在worker-data中的数据项存在的原因和意义.试图从代码实现的角度来回答,如果是从 ...