ArcGIS api fo silverlight学习三(利用ElementLayer实现鼠标悬浮弹出自定义窗体)
接着上一节继续学习,本节主要是利用ElementLayer实现鼠标悬浮弹出自定义窗体
参考博文:http://www.cnblogs.com/luxiaoxun/p/3322218.html
一、新建silverlight用户控件
自定义窗体,可以放置很多控件,命名为MyMapTip.xaml,代码为:
<Grid x:Name="LayoutRoot" Width="400" Height="100" Background="Transparent">
<Border CornerRadius="5">
<Border.Background>
<SolidColorBrush Color="Black" Opacity="0.5"/>
</Border.Background>
<StackPanel Margin="5" >
<TextBlock Foreground="Wheat" TextWrapping="Wrap" Name="textHEADLINE" ></TextBlock>
<TextBlock Foreground="Wheat" TextWrapping="Wrap" Name="textEFFECTIVE" ></TextBlock>
<TextBlock Foreground="Wheat" TextWrapping="Wrap" Name="textDESCRIPTION" ></TextBlock>
</StackPanel>
</Border>
</Grid>
后台代码为:
public MyMapTip(string EFFECTIVE, string HEADLINE, string DESCRIPTION)
{
InitializeComponent();
textEFFECTIVE.Text = "发布时间:" + EFFECTIVE;
textHEADLINE.Text = "标题:" + HEADLINE;
textDESCRIPTION.Text = DESCRIPTION;
}
二、实现自定义窗体弹出
1、定义全局变量:ElementLayer elementLayer = new ESRI.ArcGIS.Client.ElementLayer();
2、在地图中加载ElementLayer(最好放在加载GraphicsLayer之后,图层加载顺序:后加载的在上层):
this.myMap.Layers.Add(elementLayer);
3、为Graphic添加属性,并为GraphicsLayer增加鼠标事件
private void AddLightMarker()
{
GraphicsLayer glayer = new ESRI.ArcGIS.Client.GraphicsLayer();
Graphic g = new Graphic()
{
Geometry = mercator.FromGeographic(new MapPoint(108.2, 37.1)),
Symbol = LayoutRoot.Resources["StrobeMarkerSymbol"] as Symbol
};
g.Attributes.Add("EFFECTIVE", "Helllo!");
g.Attributes.Add("HEADLINE", "fdafadfaf");
g.Attributes.Add("DESCRIPTION", "badfadfafaf");
glayer.Graphics.Add(g);
this.myMap.Layers.Add(glayer);
//鼠标悬停事件
glayer.MouseEnter += glayer_MouseEnter;
//鼠标移开事件
glayer.MouseLeave += glayer_MouseLeave;
}
4、处理鼠标事件,显示自定义窗体
void glayer_MouseLeave(object sender, ESRI.ArcGIS.Client.GraphicMouseEventArgs e)
{
elementLayer.Children.Clear();
//throw new System.NotImplementedException();
}
void glayer_MouseEnter(object sender, ESRI.ArcGIS.Client.GraphicMouseEventArgs e)
{
Graphic g = e.Graphic;
elementLayer.Children.Clear(); //清除上一次的展示界面
MyMapTip infoWindow = new MyMapTip(g.Attributes["EFFECTIVE"].ToString(), g.Attributes["HEADLINE"].ToString(), g.Attributes["DESCRIPTION"].ToString()); //实例化一个界面
//投影坐标系转换成地理坐标系(从WKID=102100到WKID=4326)
MapPoint mapPoint = mercator.ToGeographic(g.Geometry as ESRI.ArcGIS.Client.Geometry.MapPoint) as MapPoint;
//设置该参数来控制图显示的位置
ElementLayer.SetEnvelope(infoWindow, new Envelope(mapPoint.X, mapPoint.Y, mapPoint.X, mapPoint.Y));
elementLayer.Children.Add(infoWindow); //将界面添加到ElementLayer
//throw new System.NotImplementedException();
}
ArcGIS api fo silverlight学习三(利用ElementLayer实现鼠标悬浮弹出自定义窗体)的更多相关文章
- ArcGIS api fo silverlight学习一(silverlight加载GeoServer发布的WMS地图)
最好的学习资料ArcGIS api fo silverlight官网:http://help.arcgis.com/en/webapi/silverlight/samples/start.htm 一. ...
- ArcGIS api fo silverlight学习二(silverlight加载GraphicsLayer)
上一节学习了silverlight加载GeoServer发布的WMS地图,这一节学习一下加载GraphicsLayer 一.加载.png或jpg文件图标 1.在MainPage.xaml中添加资源配置 ...
- ArcGIS API for Silverlight学习笔记
ArcGIS API for Silverlight学习笔记(一):为什么要用Silverlight API(转) 你用上3G手机了吗?你可能会说,我就是喜欢用nokia1100,ABCDEFG跟我都 ...
- ArcGIS API for Silverlight 学习笔记
这里主要讲解展示不同的服务地图 先看一个实例: 新建一个Silverlight项目,在MainPage.xaml文件中,引入 ESRI.ArcGIS.Client 命名空间和 ESRI.ArcGIS. ...
- ArcGIS API for Silverlight 之ElementLayer使用及TextSymbol的模板使用
原文:ArcGIS API for Silverlight 之ElementLayer使用及TextSymbol的模板使用 在开发中动态在地图上添加文字信息,可以使用TextSymbol添加文字 // ...
- ArcGIS API for Silverlight开发入门
你用上3G手机了吗?你可能会说,我就是喜欢用nokia1100,ABCDEFG跟我 都没关系.但你不能否认3G是一种趋势,最终我们每个人都会被包裹在3G网络中.1100也不是一成不变,没准哪天为了打击 ...
- ArcGIS API for Silverlight 绘制降雨路径动画
原文:ArcGIS API for Silverlight 绘制降雨路径动画 #region 降雨动画演示 2014-04-16 List<Graphic> graphics = new ...
- ArcGIS API for Silverlight 调用GP服务加载等值线图层
原文:ArcGIS API for Silverlight 调用GP服务加载等值线图层 第二篇.Silverlight客户端调用GP服务 利用ArcGIS API for Silverlight实现G ...
- ArcGIS API for Silverlight 调用GP服务准备---GP模型建立、发布、测试
原文:ArcGIS API for Silverlight 调用GP服务准备---GP模型建立.发布.测试 第一篇.GP降雨量等值线建模.发布及测试 在水利.气象等行业中,要在WebGIS中实现空间分 ...
随机推荐
- (转) 变分自编码器(Variational Autoencoder, VAE)通俗教程
变分自编码器(Variational Autoencoder, VAE)通俗教程 转载自: http://www.dengfanxin.cn/?p=334&sukey=72885186ae5c ...
- FP-tree推荐算法
推荐算法大致分为: 基于物品和用户本身 基于关联规则 基于模型的推荐 基于物品和用户本身 基于物品和用户本身的,这种推荐引擎将每个用户和每个物品都当作独立的实体,预测每个用户对于每个物品的喜好程度,这 ...
- TensorFlow官方文档中文版
github地址: https://github.com/jikexueyuanwiki/tensorflow-zh
- HTML CSS
HTML CSS css是英文Cascading Style Sheets的缩写,称为层叠样式表,用于对页面进行美化.存在方式有三种:元素内联.页面嵌入和外部引入,比较三种方式的优缺点.语法:styl ...
- Use Visual studio 2010 build Python2.7.10
http://p-nand-q.com/python/building-python-27-with-vs2010.html
- float和double在内存中的存储方式
本文转载于:http://wenku.baidu.com/link?url=ARfMiXVHCwCZJcqfA1gfeVkMOj9RkLlR9fIexbgs9gDdV8rIS48A1_xe1y6YgX ...
- 关于import caffe出错的解决
[http://blog.csdn.net/wuzuyu365/article/details/52431062]关于在caffe下,import caffe报错的解决:conda install p ...
- PL/SQLDeveloper导入导出Oracle数据库方法
前一篇博客介绍了Navicat工具备份Oracle的方法,这篇博客介绍一下使用PL/SQL Developer工具导入导出Oracle数据库的方法. PL/SQL Developer是Oracle数据 ...
- Spring+Quartz(定时任务)
此处用到的Quartz版本是quartz-2.2.3 官方网站:http://www.opensymphony.com/quartz 首先先介绍用到的几个关键类:scheduler任务调度.Job任务 ...
- ALSA 学习小记
对于playback snd_pcm_begin snd_pcm_commit, 貌似 commit给的frame才会使得alsa去把数据填充 转自 http://magodo.github.io/ ...