You can use GeometryEngine.Intersects method to decide whether graphic needs to be selected.
For example, in code below. GraphicsOverlay contain points and a polygon geometry is used for selection. Once point graphics are available, draw polygon (double-tap to complete draw), then mark graphic as selected based on return value of GeometryEngine.Intersects method. Geometries might need to be in the same SpatialReference, so you might need to use GeometryEngine.Project.
MyMapView.Map = new Map(SpatialReferences.Wgs84);
MyMapView.SpatialReferenceChanged += async (s, e) =>
{
var geometry = await MyMapView.SketchEditor.StartAsync(SketchCreationMode.Polygon, false);
var overlay = MyMapView.GraphicsOverlays.FirstOrDefault();
if (overlay != null)
{
foreach (var g in overlay.Graphics)
{
g.IsSelected = GeometryEngine.Intersects(g.Geometry, geometry);
}
}
};
MyMapView.GraphicsOverlays.Add(new GraphicsOverlay() { Renderer = new SimpleRenderer(new SimpleMarkerSymbol(SimpleMarkerSymbolStyle.Circle, Color.Yellow, 12d)) });
AddRandomGraphics();
}
private void AddRandomGraphics()
{
var random = new Random();
var overlay = MyMapView.GraphicsOverlays.FirstOrDefault();
if (overlay != null)
{
for (int i = 0; i < 10; i++)
{
var mp = new MapPoint(random.Next(-180, 180), random.Next(-90, 90), SpatialReferences.Wgs84);
overlay.Graphics.Add(new Graphic(mp));
}
}
}