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



   

在开发中动态在地图上添加文字信息,可以使用TextSymbol添加文字

  1. //动态添加文本  
  2. TextSymbol textSymbol = new TextSymbol()  
  3. {  
  4.         FontFamily = new System.Windows.Media.FontFamily("Microsoft YaHei"),  
  5.         Foreground = new System.Windows.Media.SolidColorBrush(Color.FromArgb(255, 255, 0, 0)),  
  6.         FontSize = 14,  
  7.         Text = item.ZDMC,  
  8.         OffsetX = 12,  
  9.         OffsetY = -5  
  10. };  
  11.   
  12. Graphic graphicText1 = new Graphic()  
  13. {  
  14.          Geometry = mercator.FromGeographic(new MapPoint(double.Parse(item.Latitute.ToString().Trim(), System.Globalization.CultureInfo.InvariantCulture), double.Parse(item.Longitute.ToString().Trim(), System.Globalization.CultureInfo.InvariantCulture))),  
  15.          Symbol = textSymbol  
  16. };  
  17.   
  18. graphicText1.Attributes["TextYLZMC"] = item.ZDMC;  
  19. graphicsLayer1.Graphics.Add(graphicText1);  
//动态添加文本
TextSymbol textSymbol = new TextSymbol()
{
        FontFamily = new System.Windows.Media.FontFamily("Microsoft YaHei"),
        Foreground = new System.Windows.Media.SolidColorBrush(Color.FromArgb(255, 255, 0, 0)),
        FontSize = 14,
        Text = item.ZDMC,
        OffsetX = 12,
        OffsetY = -5
};

Graphic graphicText1 = new Graphic()
{
         Geometry = mercator.FromGeographic(new MapPoint(double.Parse(item.Latitute.ToString().Trim(), System.Globalization.CultureInfo.InvariantCulture), double.Parse(item.Longitute.ToString().Trim(), System.Globalization.CultureInfo.InvariantCulture))),
         Symbol = textSymbol
};

graphicText1.Attributes["TextYLZMC"] = item.ZDMC;
graphicsLayer1.Graphics.Add(graphicText1);

 


如果要考虑给文字加背景颜色的话,该类就无法起作用了

  1. //动态添加带背景颜色的文字信息  
  2.  Border b = new Border();  
  3.  b.Background = new SolidColorBrush(Colors.Blue);  
  4.  b.Height = 20;  
  5.  b.CornerRadius = new CornerRadius(5);  
  6.  TextBlock tb = new TextBlock();  
  7.  tb.Text = item.ZDMC;  
  8.  tb.Foreground = new SolidColorBrush(Colors.White);  
  9.  tb.HorizontalAlignment = HorizontalAlignment.Center;  
  10.  tb.FontSize = 15;  
  11.  b.Child = tb;  
  12.   
  13.  ElementLayer.SetEnvelope(b, new Envelope(new MapPoint(double.Parse(item.Latitute.ToString().Trim(), System.Globalization.CultureInfo.InvariantCulture), double.Parse(item.Longitute.ToString().Trim(), System.Globalization.CultureInfo.InvariantCulture))),new MapPoint(double.Parse(item.Latitute.ToString().Trim(), System.Globalization.CultureInfo.InvariantCulture), double.Parse(item.Longitute.ToString().Trim(), System.Globalization.CultureInfo.InvariantCulture))));  
  14.  elementLayer.Children.Add(b);  
//动态添加带背景颜色的文字信息
 Border b = new Border();
 b.Background = new SolidColorBrush(Colors.Blue);
 b.Height = 20;
 b.CornerRadius = new CornerRadius(5);
 TextBlock tb = new TextBlock();
 tb.Text = item.ZDMC;
 tb.Foreground = new SolidColorBrush(Colors.White);
 tb.HorizontalAlignment = HorizontalAlignment.Center;
 tb.FontSize = 15;
 b.Child = tb;

 ElementLayer.SetEnvelope(b, new Envelope(new MapPoint(double.Parse(item.Latitute.ToString().Trim(), System.Globalization.CultureInfo.InvariantCulture), double.Parse(item.Longitute.ToString().Trim(), System.Globalization.CultureInfo.InvariantCulture))),new MapPoint(double.Parse(item.Latitute.ToString().Trim(), System.Globalization.CultureInfo.InvariantCulture), double.Parse(item.Longitute.ToString().Trim(), System.Globalization.CultureInfo.InvariantCulture))));
 elementLayer.Children.Add(b);

效果如下

 

提供第二种方法,使用TextSymbol的模板使用:

  1. <esri:TextSymbol x:Key="SWZTextSymbol">  
  2.       <esri:TextSymbol.ControlTemplate>  
  3.           <ControlTemplate>  
  4.               <Border Background="White" BorderBrush="Black" CornerRadius="5"  BorderThickness="1,1,1,1">  
  5.                   <TextBlock  
  6.                       Width="70"  
  7.                       FontSize="14"   
  8.                       Text="{Binding Attributes[TextSWZMC]}" //注意这里的TextSWZMC,和后台代码中要一致  
  9.                       Foreground="Blue"  
  10.                       FontFamily="Microsoft YaHei"  
  11.                       HorizontalAlignment="Center" />  
  12.               </Border>  
  13.           </ControlTemplate>  
  14.       </esri:TextSymbol.ControlTemplate>  
  15.   </esri:TextSymbol>  
          <esri:TextSymbol x:Key="SWZTextSymbol">
                <esri:TextSymbol.ControlTemplate>
                    <ControlTemplate>
                        <Border Background="White" BorderBrush="Black" CornerRadius="5"  BorderThickness="1,1,1,1">
                            <TextBlock
                                Width="70"
                                FontSize="14" 
                                Text="{Binding Attributes[TextSWZMC]}" //注意这里的TextSWZMC,和后台代码中要一致
                                Foreground="Blue"
                                FontFamily="Microsoft YaHei"
                                HorizontalAlignment="Center" />
                        </Border>
                    </ControlTemplate>
                </esri:TextSymbol.ControlTemplate>
            </esri:TextSymbol>


 

  1. TextSymbol textSymbol = LayoutRoot.Resources["SWZTextSymbol"as TextSymbol; //这里和模板的Key名称要一致  
  2. textSymbol.OffsetX = 15;  
  3. textSymbol.OffsetY = -15;  
  4.   
  5. Graphic graphicText = new Graphic()  
  6.  {  
  7.        Geometry = mercator.FromGeographic(new MapPoint(double.Parse(item.Latitute.ToString().Trim(), System.Globalization.CultureInfo.InvariantCulture), double.Parse(item.Longitute.ToString().Trim(), System.Globalization.CultureInfo.InvariantCulture))),  
  8.        Symbol = textSymbol  
  9.  };  
  10.  graphicText.Attributes["TextSWZMC"] = item.ZDMC; //注意这里的TextSWZMC,和前台xaml代码中要一致  
  TextSymbol textSymbol = LayoutRoot.Resources["SWZTextSymbol"] as TextSymbol; //这里和模板的Key名称要一致
  textSymbol.OffsetX = 15;
  textSymbol.OffsetY = -15;

  Graphic graphicText = new Graphic()
   {
         Geometry = mercator.FromGeographic(new MapPoint(double.Parse(item.Latitute.ToString().Trim(), System.Globalization.CultureInfo.InvariantCulture), double.Parse(item.Longitute.ToString().Trim(), System.Globalization.CultureInfo.InvariantCulture))),
         Symbol = textSymbol
   };
   graphicText.Attributes["TextSWZMC"] = item.ZDMC; //注意这里的TextSWZMC,和前台xaml代码中要一致
  1. graphicsLayer11.Graphics.Add(graphicText);  
   graphicsLayer11.Graphics.Add(graphicText);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值