求救,高德地图,近似圆的多边形怎么画

大佬们,在地图怎么根据一个点和半径大小画一个近似圆的多边形。目前不知道怎么根据点(点的经纬度)和半径来获取一个近似圆的多边形经纬度路径。效果是像图中那样子的。

就是这个根据一个点(经纬度)和一个半径(整数)来获取一个近似圆的多边形的覆盖路径,就是一串经纬度数组,像下图那样。谢谢大佬们。

经纬度和距离的换算方法参见这里:https://www.cnblogs.com/softfair/p/lat_lon_distance_bearing_new_lat_lon.html

思路是根据圆心的经纬度和半径,遍历差值为2pi/n的角度,获取最后的路径点。

具体实现交给题主自己来吧,还是需要花点时间研究一下怎么经纬转换的。

// 根据坐标、半径获取圆切点

getPolygonPath () {

      // 坐标点

      let centerpoint = {

        longitude: 113.376778,

        latitude: 23.13588

      }

      let radius = 10000 // 半径

      let r = 6371000.79 // 相同体积的球半径R3(m): 6371000.78997

      let numPoints = 20 // 分布多少个点

      let arc = 2 * Math.PI / numPoints // 每个点的弧度

      let lnglats = []

      for (let i = 0; i < numPoints; i++) {

        // 计算坐标点

        let dx = (radius * Math.cos(i * arc))

        let dy = (radius * Math.sin(i * arc)) // 乘以1.6 椭圆比例

        // 转换成经纬度

        let dlng = dx / (r * Math.cos(centerpoint.latitude * Math.PI / 180) * Math.PI / 180)

        let dlat = dy / (r * Math.PI / 180)

        let newlng = centerpoint.longitude + dlng

        let newlat = centerpoint.latitude + dlat

        lnglats.push([newlng, newlat])

      }

      console.log(JSON.stringify(lnglats))

    }

谢谢大佬们,已经算出来了

//仅供参考
var map = new AMap.Map('container', {
    resizeEnable: true,
    zoom:11,
    center: [116.397428, 39.90923]
});
// 圆参数
var circle = new AMap.Circle({
    center: new AMap.LngLat('116.273707','39.896989'), // 圆心位置
    radius: 1000,  //半径
    strokeColor: "#FF0000",  //线颜色
    strokeOpacity: 1,  //线透明度
    strokeWeight: 1,  //线粗细度
    fillColor: "#76D5C2",  //填充颜色
    fillOpacity: 0.35 //填充透明度
});


map.add(circle);
map.setFitView();