baidu_32809053
Hobart-Ljw
采纳率23.5%
2021-03-02 18:28

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

30

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

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

  • 点赞
  • 收藏
  • 复制链接分享

3条回答

  • ProfSnail ProfSnail 1月前

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

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

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

    点赞 评论 复制链接分享
  • baidu_32809053 Hobart-Ljw 1月前

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

    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))

        }

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

    点赞 1 评论 复制链接分享
  • qq_34124780 qq_34124780 1月前
    //仅供参考
    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();
    
    


     

    点赞 评论 复制链接分享

为你推荐