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();
}

时间: 2024-08-01 10:32:53

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 一.GeoServer环境搭建及数据发布 参考:http://www.cnblogs.com/beniao/archive/2011/01/08/1930822.html等 二.创建ArcGIS API for SilverLight应用 参考:http://blog.csdn.net/zdw_wym/

ArcGIS api fo silverlight学习二(silverlight加载GraphicsLayer)

上一节学习了silverlight加载GeoServer发布的WMS地图,这一节学习一下加载GraphicsLayer 一.在MainPage.xaml中添加资源配置 <Grid.Resources>            <esri:SimpleMarkerSymbol x:Key="RedMarkerSymbol" Color="Red" Size="12" Style="Circle" />   

ArcGIS API for Silverlight 学习笔记

这里主要讲解展示不同的服务地图 先看一个实例: 新建一个Silverlight项目,在MainPage.xaml文件中,引入 ESRI.ArcGIS.Client 命名空间和 ESRI.ArcGIS.Client 所在的程序集 ESRI.ArcGIS.Client,并指定 该命名空间的名字为 esri,当然你也可以用自己的别名,比如myGIS. 接着写Map控件,并指定Map中的地图服务,一个简单的服务地图完成了,代码如下: <UserControl x:Class="ArcGISTile

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

原文:ArcGIS API for Silverlight 之ElementLayer使用及TextSymbol的模板使用 在开发中动态在地图上添加文字信息,可以使用TextSymbol添加文字 //动态添加文本 TextSymbol textSymbol = new TextSymbol() { FontFamily = new System.Windows.Media.FontFamily("Microsoft YaHei"), Foreground = new System.Wi

ArcGIS API for Silverlight 调用GP服务准备---GP模型建立、发布、测试

原文:ArcGIS API for Silverlight 调用GP服务准备---GP模型建立.发布.测试 第一篇.GP降雨量等值线建模.发布及测试 在水利.气象等行业中,要在WebGIS中实现空间分析功能,如绘制等值线.等高线.等直面.缓冲区等都是经常遇到,经过一段时间的学习和研究,查阅ESRI文档,请教他人,终于可以说是初步实现了等值线功能,这里记录下来详细的操作步骤和图片说明,一方面是对此次努力的总结,另一方面希望也能给后来用到这方面的其他同志们,起个抛砖引玉的作用. 下一篇是关于Silv

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

原文:ArcGIS API for Silverlight 调用GP服务加载等值线图层 第二篇.Silverlight客户端调用GP服务 利用ArcGIS API for Silverlight实现GP服务调用,这里的雨量数据是通过一个WebService获取而来,主要信息是雨量站点的经纬度坐标值和某个时间段内的降雨量值三个主要字段. 以下是核心代码部分: <UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/pr

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

原文:ArcGIS API for Silverlight 绘制降雨路径动画 #region 降雨动画演示 2014-04-16 List<Graphic> graphics = new List<Graphic>(); int INDEX = 0; MapPoint GLOBAL = new MapPoint(); //保存上一次绘制降雨圈的点信息 2014-04-16 int INDEX_2 = 0; //控制是否是第一次绘制降雨圈 /// <summary> //

浅析ArcGis API for Silverlight查询

一.ArcGis API for Silverlight 简介    ArcGIS API for Silverlight是由美国Esri公司推出的,用于在Silverlight平台上开发WebGIS应用的一套编程接口.ArcGIS API for Silverlight通过REST接口访问ArcGIS Server发布的地图服务.影像服务.几何服务.地理处理服务.要素服务.网络服务等,还可以访问OGC标准的WMS.WFS.WCS等服务,也可以访问Bing地图服务.主要功能有:1. 空间数据展示

ArcGIS API for Silverlight开发入门准备

原文:ArcGIS API for Silverlight开发入门准备 微软的Silverlight提供了跨浏览器和跨平台开发环境,在Web中可用于创建和展现富互联网应用(RIA,Rich Internet Application). ArcGIS API for Silverlight 能够让的Silverlight应用程序具有集成ArcGIS Server.ESRI MapIt和Bing Maps服务的能力.利用 ArcGIS Server 和Bing Maps资源,比如说Maps.Loca