ccannell

TextSymbol BackgroundColor not working with static rendering

Discussion created by ccannell on Oct 16, 2015

I have noticed that the BackgroundColor property has no affect when rendering is set to static for a graphics layer. The BackgroundColor property works if the rendering mode is dynamic, however, the TextSymbol placement changes. Screenshots and code below (see line 49)

 

Static Rendering

Screenshot 2015-10-16 11.09.08.png

Dynamic Rendering

Screenshot 2015-10-16 11.08.03.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