ESRI.ArcGIS.Client.Toolkit.DataSources.GeoRssLoader.GetRadiusAsPolygonGeodesic C# (CSharp) Method

GetRadiusAsPolygonGeodesic() public static method

public static GetRadiusAsPolygonGeodesic ( MapPoint center, double distance, int pointCount ) : Polygon
center MapPoint
distance double
pointCount int
return Polygon
        public static Polygon GetRadiusAsPolygonGeodesic(MapPoint center, double distance, int pointCount)
        {
            Polyline line = GetRadiusGeodesicAsPolyline(center, distance, pointCount);
            Polygon poly = new Polygon() { SpatialReference = new SpatialReference(4326) };

            if (line.Paths.Count > 1)
            {
                PointCollection ring = line.Paths[0];
                MapPoint last = ring[ring.Count - 1];
                for (int i = 1; i < line.Paths.Count; i++)
                {
                    PointCollection pnts = line.Paths[i];
                    ring.Add(new MapPoint(180 * Math.Sign(last.X), 90 * Math.Sign(center.Y)));
                    last = pnts[0];
                    ring.Add(new MapPoint(180 * Math.Sign(last.X), 90 * Math.Sign(center.Y)));
                    foreach (MapPoint p in pnts)
                        ring.Add(p);
                    last = pnts[pnts.Count - 1];
                }
                poly.Rings.Add(ring);
            }
            else
            {
                poly.Rings.Add(line.Paths[0]);
            }
            if (distance > _EARTHCIRCUMFERENCE_ * Math.PI / 2 && line.Paths.Count != 2)
            {
                PointCollection pnts = new PointCollection();
                pnts.Add(new MapPoint(-180, -90));
                pnts.Add(new MapPoint(180, -90));
                pnts.Add(new MapPoint(180, 90));
                pnts.Add(new MapPoint(-180, 90));
                pnts.Add(new MapPoint(-180, -90));
                poly.Rings.Add(pnts); //Exterior
            }
            return poly;
        }