I'm trying to create a ClassBreakRenderer and set it on a GraphicsOvelay and cannot get it to work. The renderer works fine on a FeatureLayer, but doesn't work on a GraphicsOverlay that's been created using the same data as the FeatureLayer. I'm not sure what I'm missing here. Is there a sample somewhere that shows how to do this? I pasted the code below, and also attached the repro case, in case someone is up for giving me a hand in getting to the bottom of this. Working with 100.5. Thank you!!!
- Mara
private async void RenderData()
{
Map newMap = new Map(Basemap.CreateStreets());
Envelope continentalUSEnvelope = new Envelope(-14193469.5655232, 2509617.28647268, -7228772.04749191, 6737139.97573925, SpatialReferences.WebMercator);
newMap.InitialViewpoint = new Viewpoint(continentalUSEnvelope);
MyMapView.Map = newMap;
MyMapView.GraphicsOverlays.Add(new GraphicsOverlay());
var useFeatureLayer = true;
if (useFeatureLayer)
{
var featureLayer = new FeatureLayer(new Uri("https://services8.arcgis.com/KsXZDThvSinzJ3pq/arcgis/rest/services/test_pipeline/FeatureServer/0"));
featureLayer.Renderer = CreateClassBreaksRenderer();
MyMapView.Map.OperationalLayers.Add(featureLayer);
}
else
{
var featTable = new ServiceFeatureTable(new Uri("https://services8.arcgis.com/KsXZDThvSinzJ3pq/arcgis/rest/services/test_pipeline/FeatureServer/0"));
var queryParams = new QueryParameters { WhereClause = "1=1" };
var featureResult = await featTable.QueryFeaturesAsync(queryParams, QueryFeatureFields.LoadAll);
foreach (var result in featureResult)
{
var pipeSegment = result.Geometry;
var graphic = new Graphic(pipeSegment);
graphic.Attributes.Add("break", result.Attributes["break"]);
MyMapView.GraphicsOverlays[0].Graphics.Add(new Graphic(pipeSegment));
}
MyMapView.GraphicsOverlays[0].Renderer = CreateClassBreaksRenderer();
}
}
private ClassBreaksRenderer CreateClassBreaksRenderer()
{
var symbol1 = new SimpleLineSymbol(SimpleLineSymbolStyle.Solid, Color.Red, 7);
var symbol2 = new SimpleLineSymbol(SimpleLineSymbolStyle.Solid, Color.Yellow, 7);
var symbol3 = new SimpleLineSymbol(SimpleLineSymbolStyle.Solid, Color.Green, 7);
List<ClassBreak> listClassBreaks = new List<ClassBreak>
{
new ClassBreak("1", "1", 0, 1, symbol1),
new ClassBreak("2", "2", 1, 2, symbol2),
new ClassBreak("3", "3", 2, 3, symbol3),
};
return new ClassBreaksRenderer("break", listClassBreaks);
}