Пример #1
0
        private static Polygon GetInfluencePolygon(double?possibleLatitude, double?possibleLongtitude, double radius)
        {
            if (!possibleLatitude.HasValue || !possibleLongtitude.HasValue)
            {
                return(null);
            }

            var latitude   = possibleLatitude.Value;
            var longtitude = possibleLongtitude.Value;

            Gps centre = new Gps(latitude, longtitude);

            // In metres
            double worldRadius = 6371000;

            // In metres

            Gps[] points = new Gps[20];
            CirclePoints(points, centre, worldRadius, radius);
            var polygon = new Polygon();

            polygon.Extrude                              = true;
            polygon.AltitudeMode                         = AltitudeMode.RelativeToGround;
            polygon.OuterBoundary                        = new OuterBoundary();
            polygon.OuterBoundary.LinearRing             = new LinearRing();
            polygon.OuterBoundary.LinearRing.Coordinates = new CoordinateCollection();
            points.ToList <Gps>().ForEach(g =>
            {
                polygon.OuterBoundary.LinearRing.Coordinates.Add(new SharpKml.Base.Vector(g.Latitude, g.Longtitude, 30));
            });
            // close the circle
            polygon.OuterBoundary.LinearRing.Coordinates.Add(new SharpKml.Base.Vector(points.First().Latitude, points.First().Longtitude, 30));
            return(polygon);
        }