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

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

//动态添加文本
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);

 


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

//动态添加带背景颜色的文字信息
 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的模板使用:

          <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>


 

  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代码中要一致
   graphicsLayer11.Graphics.Add(graphicText);



 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值