/// <summary>
/// 创建一个模拟圆的多边形
/// </summary>
/// <param name="centreOfCircle">经纬度表示的圆心</param>
/// <param name="radius">半径(单位米)</param>
/// <param name="deltaDegrees">描点时,每次增加的角度,该值控制了多边形近似圆的程度</param>
/// <returns>经纬度表示的近圆多边形</returns>
public static Polygon MakeACircle(Point centreOfCircle, double radius, double deltaDegrees)
{
centreOfCircle = ToLocal(centreOfCircle);
double deltaRadians = (Math.PI / 180) * deltaDegrees;
Polygon retPg = new Polygon();
retPg.Rings.Add(new Ring());
for (double j = 0; j < 2 * Math.PI; j += deltaRadians)
{
Point pt = new Point(centreOfCircle.X + radius * Math.Cos(j), centreOfCircle.Y + radius * Math.Sin(j));
pt = ToWGS84(pt);
retPg.Rings[0].Points.Add(pt);
}
return retPg;
}
/// 创建一个模拟圆的多边形
/// </summary>
/// <param name="centreOfCircle">经纬度表示的圆心</param>
/// <param name="radius">半径(单位米)</param>
/// <param name="deltaDegrees">描点时,每次增加的角度,该值控制了多边形近似圆的程度</param>
/// <returns>经纬度表示的近圆多边形</returns>
public static Polygon MakeACircle(Point centreOfCircle, double radius, double deltaDegrees)
{
centreOfCircle = ToLocal(centreOfCircle);
double deltaRadians = (Math.PI / 180) * deltaDegrees;
Polygon retPg = new Polygon();
retPg.Rings.Add(new Ring());
for (double j = 0; j < 2 * Math.PI; j += deltaRadians)
{
Point pt = new Point(centreOfCircle.X + radius * Math.Cos(j), centreOfCircle.Y + radius * Math.Sin(j));
pt = ToWGS84(pt);
retPg.Rings[0].Points.Add(pt);
}
return retPg;
}