AnsweredAssumed Answered

TextSymbol rendering in 10.2.6

Question asked by ccannell on Oct 16, 2015
Latest reply on Jan 25, 2017 by Renzo_Bo

While investigating version 10.2.6 I have noticed a regression in the rendering of a TextSymbol in my code. I am seeing three issues, enumerated below. Related code at the bottom of the post. Any ideas on why these issues are occurring? Are they known issues? I could not find anything in the release notes.

 

1. Placement of the TextSymbol is different in 10.2.6 than it was in 10.2.4. In 10.2.4 it was right justified. In 10.2.6 it is now centered. See screenshots. The HorizontalTextAlignment property does not have an affect.

 

2. There is leftover TextSymbol when clearing the TextSymbol and creating a new one. See screenshots

 

3. The TextSymbol is sometimes cut off (half of it will be missing).

 

10.2.4

textsymbol 10.2.4.png

 

10.2.6

textsymbol 10.2.6.png

 

 

 private async void MeasureLocationAsync(object sender, RoutedEventArgs e)
    {
      while (true)
      {
        // get or create graphics layer to display user measurement objects
        var measureLayer = (GraphicsLayer) MyMapView.Map.Layers[MeasureLayerID];
        if (measureLayer == null)
        {
          measureLayer = new GraphicsLayer {ID = MeasureLayerID};
          measureLayer.RenderingMode = GraphicsRenderingMode.Static;
          MyMapView.Map.Layers.Add(measureLayer);
        }

        var taskLoadLayer = MyMapView.LayersLoadedAsync(new List<Layer> {measureLayer});
        var taskDrawShape = MyMapView.Editor.RequestPointAsync();
        try
        {
          await Task.WhenAll(taskLoadLayer, taskDrawShape);
        }
        catch (TaskCanceledException)
        {
          // editor operation was cancelled. break out of this
          return;
        }

        var point = taskDrawShape.Result;
        var wgs84Location = (MapPoint)GeometryEngine.Project(point, SpatialReferences.Wgs84);

        // clear existing items from measurement layer
        measureLayer.Graphics.Clear();

        // create symbol
        var markerSymbol = new SimpleMarkerSymbol
        {
          Color = Colors.Orange,
          Size = 16,
          Outline = new SimpleLineSymbol()
          {
            Color = Colors.Black,
            Width = 3
          }
        };
        var symbolGraphic = new Graphic(point, markerSymbol);

        // create text label
        var textSymbol = new TextSymbol
        {
          Color = Colors.Orange,
          BackgroundColor = Colors.Black, // this doesn't work when rendering mode is static, bug in esri?
          XOffset = 10,
          YOffset = 10,
          HorizontalTextAlignment = HorizontalTextAlignment.Right,
          Font = new SymbolFont(MeasurePostionButton.FontFamily.Source, 24, SymbolFontStyle.Normal, SymbolTextDecoration.None, SymbolFontWeight.Bold),
          Text = $"{wgs84Location.X}, {wgs84Location.Y}"
        };
        var textGraphic = new Graphic(point, textSymbol);

        measureLayer.Graphics.Add(symbolGraphic);
        measureLayer.Graphics.Add(textGraphic);
      }
    }

Outcomes