ArCGIS API for Silverlight 实现闪烁标注功能

ArCGIS API for Silverlight 实现闪烁标注功能,第1张

概述1,作为每个标注作为元素进行添加,在ElmentLayer可以放任何SL的控件,可 *** 作性比较强,用起来也比较灵活。可以利用Elment 实现,InfoWindow,tip等功能,当然实现标注可是小菜一碟, 先定义一个UserControl ,UserControl 里面可以添加我们要为要素的标注信息。XAML 如下 [csharp]   view plain copy <UserControl x 1,作为每个标注作为元素进行添加,在ElmentLayer可以放任何SL的控件,可 *** 作性比较强,用起来也比较灵活。可以利用Elment 实现,InfoWindow,tip等功能,当然实现标注可是小菜一碟,

先定义一个UserControl ,UserControl 里面可以添加我们要为要素的标注信息。XAML 如下

[csharp]   view plain copy <UserControl x:Class="VolunteerAction.MyInfoWindow"       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"       d:DesignHeight="300" d:DesignWIDth="400">       <GrID x:name="LayoutRoot" Background="{x:Null}" Height="62" WIDth="290">       <TextBlock  HorizontalAlignment="Right" textwrapPing="Wrap"  VerticalAlignment="top"  Height="61" name="textBlock1" Text="TextBlock"  WIDth="114" FontSize="18" FontStyle="Italic" FontWeight="Bold" FontFamily="Arial" />       </GrID>   </UserControl>  

cs 文件如下

copy using System;   using System.Collections.Generic;   using System.linq;   using System.Net;   using System.@R_419_5087@;   using System.@R_419_5087@.Controls;   using System.@R_419_5087@.documents;   using System.@R_419_5087@.input;   using System.@R_419_5087@.Media;   using System.@R_419_5087@.Media.Animation;   using System.@R_419_5087@.Shapes;         namespace VolunteerAction   {       public partial class MyText : UserControl       {           public MyText()           {               InitializeComponent();               Storyboard sd = new Storyboard();               sd.autoReverse = true;               colorAnimation c = new colorAnimation();               c.From = color.FromArgb(255, 255, 0, 0);               c.To = color.FromArgb(255, 255);               c.Duration = new Duration(new TimeSpan(0,1,500));               c.RepeatBehavior = RepeatBehavior.Forever;               Storyboard.SetTarget(c, textBlock1);               Storyboard.SetTargetProperty(c, new PropertyPath("(TextBlock.ForeGround).(SolIDcolorBrush.color)"));               sd.Children.Add(c);               sd.Begin();           }       }   }  
这里我只是放了一个 TestBlock,需要注意的是我给这个UIElement 增加了一个故事板来形成一个动画,形成颜色随着时间改变。关于故事板的内容,请参考其他相关资料 copy c.RepeatBehavior = RepeatBehavior.Forever 为了使动画一直循环  

下面是把我们的Element 添加到地图上,让ElementLayer 来承载我们上面创建的用户控件

copy  _elementLayer = new ElementLayer();     Mymap .Layers.Add(_elementLayer);     MapPoint addpt =(MapPoint) g1.Geometry;     MyInfoWindow m = new MyInfoWindow();     m.textBlock1.Text = g.Attributes["name"].ToString();     ElementLayer.SetEnvelope(m, new Envelope(addpt, addpt));     _elementLayer.Children.Add(m)  
运行程序

这样使文本框不断的处于闪烁效果。 


2.我们知道 在ArcGIS API for Silverlight中的符号中 有一个是TextSymbol  我们可以利用这个来实现标注功能,TextSymbol 属于点的符号化。所以我们只要为 一个点的Graphic 的符号设置为 TextSymbol ,文本可以绑定到相应的属性,或者自己设置要显示的文本也是可以的。

关键代码如下 

        

copy FeatureLayer mylayer = map.Layers["Mylayer"as FeatureLayer;                GraphicCollection gs = mylayer.Graphics;                Graphicslayer layer=new Graphicslayer ();                    foreach (Graphic g in gs)                {                    Graphic g1 = new Graphic();                    g1.Geometry=g.Geometry;                    Brush  b=new SolIDcolorBrush(color.FromArgb(100,255));                    g1.Symbol = new TextSymbol() { Text = g.Attributes["name_PY"].ToString().Substring(0,5), Foreground=b, FontSize=20  };                                        layer.Graphics.Add(g1);                }                map.Layers.Add(layer);    
以上两种实现标注 第一种实现比较灵活,当然第二种方式中我们也可以实现类似第一种的闪烁效果,但是使用Element我们可以添加任意的UIElement.比如 Chart。DatagrID。实现更丰富的标注



如果我们要为一个面增加标注,那门我们的标注位置如何获得呢。没关系,ArcGIS Server 提供了 GeometryServices利用几何服务的 LabelPoint方法既可以实现了

总结

以上是内存溢出为你收集整理的ArCGIS API for Silverlight 实现闪烁标注功能全部内容,希望文章能够帮你解决ArCGIS API for Silverlight 实现闪烁标注功能所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1063421.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-26
下一篇2022-05-26

发表评论

登录后才能评论

评论列表(0条)

    保存