首页 / 浏览问题 / WebGIS / 问题详情
leaflet 叠加分析出错
55EXP 2022年07月20日

在页面绘制了一个圆和一个正方形,并转化成geojson对象进行叠加分析报错

 var layers= L.layerGroup().addTo(map)
    map.on(L.Draw.Event.CREATED, function (e) {
        var type = e.layerType, layer = e.layer;
        layers.addLayer(layer);
        })

    $("#btn").on("click",function () {
      var collection= layers.toGeoJSON()
       var GeometryOverlayAnalystParameters= new SuperMap.GeometryOverlayAnalystParameters({
           operateGeometry:collection[0],
           sourceGeometry:collection[1],
           operation: L.supermap.OverlayOperationType.UNION
       })
        L.supermap.spatialAnalystService("http://localhost:8090/iserver/services/spatialAnalysis-ChengDuShengXian/restjsr/spatialanalyst").overlayAnalysis(GeometryOverlayAnalystParameters, function (res) {
            console.log(res)
        })


    })

1个回答

您好,leaflet的圆对象不是我常规意义上理解的圆面,他是一个参数化点对象+半径的结构,并不是节点结构的面对象本质是点,因此不能作为这种分析参数来使用。

当前建议使用普通的多边形对象,来构造“圆”的面,如

var radius = 2;
//点集
var parts = [];
//计算圆的边缘所有点
for (var i = 0; i < 360; i++) {
var radians = (i + 1) * Math.PI / 180;
var circlePoint = [Math.cos(radians) * radius + 34, Math.sin(radians) * radius + 108];
parts[i] = circlePoint;
}

var polygon1 = L.polygon(parts, {
color: 'green'
});
或者使用其他便于您数据形式的构造方式。
希望可以帮助到您。
于丁
2
9,538EXP 2022年07月20日
好的,非常感谢,已经解决了
...