Here's some documentation on FindGraphicsInHostCoordinates: http://help.arcgis.com/en/webapi/silverlight/apiref/ESRI.ArcGIS.Client~ESRI.ArcGIS.Client.GraphicsLa.... You can convert your polygon to Rect and pass to this method, the result will be graphics within that rectangle.You can also try the following using v3.0 Beta 1 http://help.arcgis.com/en/webapi/silverlight/3.0/.Geodesic.Area() will also be available in our 2.3 release. However, I'm not sure if getting the intersection of their extents will be good enough for you. This may also be expensive since it tries to get intersection with all graphics in the layer.
private static bool OverlapsExistingFeature(Graphic n, GraphicsLayer l)
{
var area = Geodesic.Area(n.Geometry as Polygon);
foreach (var g in l.Graphics)
{
if (g != n)
{
if (g.Geometry.Extent.Intersects(n.Geometry.Extent))
{
var intersection = GetIntersection(n, g);
var intersectionArea = Geodesic.Area(intersection);
var target = Geodesic.Area(g.Geometry as Polygon);
var coverage = (intersectionArea / target * 100);
if (coverage >= 100)
return true;
}
}
}
return false;
}
private static Polygon GetIntersection(Graphic n, Graphic g)
{
var env = n.Geometry.Extent.Intersection(g.Geometry.Extent);
var intersection = new Polygon();
PointCollection ring = new PointCollection();
ring.Add(new MapPoint(env.XMin, env.YMin));
ring.Add(new MapPoint(env.XMin, env.YMax));
ring.Add(new MapPoint(env.XMax, env.YMax));
ring.Add(new MapPoint(env.XMax, env.YMin));
ring.Add(new MapPoint(env.XMin, env.YMin));
intersection.Rings.Add(ring);
return intersection;
}