ArcGIS API for Silverlight 動態新增點的同時,新增文字說明(利用TextSymbol新增多文字資訊 )

暖楓無敵發表於2012-05-17

在前面的部落格中提到動態新增點,地址:http://blog.csdn.net/taomanman/article/details/7354103

這裡根據需要,在新增點的同時,動態新增文字資訊。

        public void AddMarkerGraphics()
        {
            ESRI.ArcGIS.Client.Projection.WebMercator mercator = new ESRI.ArcGIS.Client.Projection.WebMercator();
            GraphicsLayer graphicsLayer = myMap.Layers["MyGraphicsLayer"] as GraphicsLayer;
            //新增點資訊
            Graphic graphic = new Graphic()
            {
                Geometry = mercator.FromGeographic(new MapPoint(115.257113, 33.0696150000001)),
                Symbol = LayoutRoot.Resources["DefaultMarkerSymbol"] as Symbol
            };
            graphicsLayer.Graphics.Add(graphic);
            //新增文字資訊
            TextSymbol textSymbol = new TextSymbol()
            {
                FontFamily = new System.Windows.Media.FontFamily("Microsoft YaHei"),
                Foreground = new System.Windows.Media.SolidColorBrush(Color.FromArgb(255, 117, 20, 99)),
                FontSize = 12,
                Text = "需要新增的文字,可以根據需要動態讀取賦值"
            };

            Graphic graphicText = new Graphic()
            {
                Geometry = mercator.FromGeographic(new MapPoint(115.257113, 33.0696150000001)),
                Symbol = textSymbol
            };
            graphicsLayer.Graphics.Add(graphicText);
        }



主要是利用TextSymbol類來作為文字的顯示,然後新增到Graphics中去。

如果需要在動態新增圖示記的同時,新增多個文字注視的話,比如在點的上方新增數值,點的下方新增名稱,這樣的話,我們可以調整的有TextSymbol的OffsetX和OffsetY屬性,進行相應的調整即可達到實現目的。

 #region 水位/雨量 數值
TextSymbol textSymbol2 = 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.YL24.ToString(),
        OffsetX = 6,
        OffsetY = 20
};

 Graphic graphicText2 = 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 = textSymbol2
 };
 graphicText.Attributes["TextYL"] = item.YL24;
 graphicsLayer.Graphics.Add(graphicText2);

 #endregion

實際的效果如下圖,並且隨著地圖的縮放,這些文字也是隨著更改,不會出現位置偏差




相關文章