ArcGIS API for Silverlight动态标绘的实现
原文: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动态标绘的实现的更多相关文章
- 基于ArcGIS Flex API实现动态标绘(1.1)
动态标绘API 1.1版本号.相较前一版本号1.0(点击进入).该版本号提供标绘符号的编辑功能. 编辑功能包含两种编辑状态:编辑控制点.对标绘符号进行旋转.八方向拉伸.平移. 编辑控制点例如以下图所看 ...
- 基于ArcGIS Flex API实现动态标绘(1.2)
动态标绘API 1.2,相较前一版本号(点击进入),该版本号新增对基本标绘符号的支持,包含: 单点.多点.折线.手绘线.多边形.手绘多边形.矩形,并提供对应的编辑功能. 例如以下图所看到的,对多点的编 ...
- 使用Visifire+ArcGIS API for Silverlight实现Graphic信息的动态图表显示
原文:使用Visifire+ArcGIS API for Silverlight实现Graphic信息的动态图表显示 首先来看一看实现的效果: PS:原始的程序中更新曲线数据时添加了过渡的效果,具体可 ...
- arcgis api for silverlight开发系列之二:缓存图层与动态图层及图层总结 .
本文摘自:http://blog.csdn.net/leesmn/article/details/6916458(很优秀的博客) 作为ESRI的平台的一份子arcgis api for silve ...
- 动态标绘演示系统1.4.3(for ArcGIS Flex)
标绘有API文档啦! 在线浏览 ------------------------------------------------------------------------------------ ...
- ArcGIS API for Silverlight 绘制降雨路径动画
原文:ArcGIS API for Silverlight 绘制降雨路径动画 #region 降雨动画演示 2014-04-16 List<Graphic> graphics = new ...
- ArcGIS API for Silverlight之配准JPG图片地图文字倾斜解决方案
原文:ArcGIS API for Silverlight之配准JPG图片地图文字倾斜解决方案 根据实际JPG图片进行配准后,发布的地图,利用ArcGIS API for Silverlight在网页 ...
- ArcGIS API for Silverlight 之ElementLayer使用及TextSymbol的模板使用
原文:ArcGIS API for Silverlight 之ElementLayer使用及TextSymbol的模板使用 在开发中动态在地图上添加文字信息,可以使用TextSymbol添加文字 // ...
- ArcGIS API for Silverlight 调用GP服务加载等值线图层
原文:ArcGIS API for Silverlight 调用GP服务加载等值线图层 第二篇.Silverlight客户端调用GP服务 利用ArcGIS API for Silverlight实现G ...
随机推荐
- Partran,Nastran和ANSYS的区别
Partran .Nastran是MSC公司的产品.Patran是前处理器,用于建模.划分网格.设定载荷和边界条件等等:Nastran只是MSC公司提供的求解器之一,主要用于结构分析和热分析,应用的是 ...
- bzoj1019 [SHOI2008]汉诺塔
1019: [SHOI2008]汉诺塔 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 1030 Solved: 638[Submit][Status] ...
- Square Coins[HDU1398]
Square Coins Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tota ...
- Android 与 IIS服务器身份验证
1)基础验证: /** * 从服务器取图片 * * @param url * @return */ public void getHttpBitmap(final String url) { new ...
- silverlight 跨域访问 wcf
先介绍一下我的测试项目,我用flash和silverlight一同来调用一个webservice,一个flash客户端,一个silverlight客户端,一个web项目来host flash和silv ...
- TYVJ P1037 阶乘统计2 Label:坑
描述 n的阶乘定义为n!=1*2*3*……*n 如3!=6 n!通常最后会有很多0,如5!=120 最后有一个0,现在统计n!去除末尾的0后,最后k位是多少 输入格式 第一行包括两个数n,k 输 ...
- BZOJ3211 花神游历各国
Description Input Output 每次x=1时,每行一个整数,表示这次旅行的开心度 Sample Input 4 1 100 5 5 5 1 1 2 2 1 2 1 1 2 2 ...
- JavaScript验证函数大全
1. 长度限制 <script> function test() { if(document.a.b.value.length>50) { alert("不能超过50个字符 ...
- RTO & RPO
作者:王文洋链接:https://www.zhihu.com/question/30753842/answer/49334210来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...
- Wikipedia : OIT history
http://en.wikipedia.org/wiki/Order-independent_transparency Order-independent transparency From Wiki ...