中心点经纬度和半径,生成多边形

今天告诉大家如何将一个圆形,转换成多边形,然后再将这个多边形画图

  1. 首先我们将某个点的坐标轴作为圆形,某个单位作为其半径

  2. 我们可以通过将其360度等分的方式,来将圆形分割成360个点

  3. 中心点和其在Y轴最大的差值(或者中心点-Y轴最小的差值)*sin角度,就可以得到每个点位X轴位置

  4. 同理,中心点在其X轴的最大差值(或者中心点-X轴的最小差值)*con角度, 就可以得到每个点位的Y轴位置

  5. 最后在将这360个点组成的图形,连接起来,就可以得到一个圆形

Tip: 在JS中, Math.cos(Math.PI / 180)或者Math.sin(Math.PI / 180), 才是你想要的,而不是直接的Math.cos(1);

我们来简单看一下代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/// <summary>
/// 切分成360
/// </summary>
/// <param name="lng">中心点经度</param>
/// <param name="lat">中心点纬度</param>
/// <param name="longitude">经度半径</param>
/// <param name="latitude">纬度半径</param>
/// <returns>点位集合</returns>
function getEllipsePoints(lng, lat, longitude, latitude) {
let list = [];
for (let i = 0; i < 360; i += 1) {
list = [...list, [lng + longitude * Math.cos((Math.PI * i) / 180), lat + latitude * Math.sin((Math.PI * i) / 180)]];
}
return list;
}