如何处理openlayers绘制多边形事件

how to handle openlayers draw polygon event

本文关键字:openlayers 绘制 多边形 事件 处理 何处理      更新时间:2023-09-26

我在我的OpenLayers应用程序中有这样的绘制控件。

    var drawControls = {
        polygon: new OpenLayers.Control.DrawFeature(polygonLayer, OpenLayers.Handler.Polygon),
        box: new OpenLayers.Control.DrawFeature(boxLayer, OpenLayers.Handler.RegularPolygon,{
            handlerOptions: {
                sides: 4,
                irregular: true
            }
        })
    };

我正在用控件的激活功能激活这个控件。

 var control = drawControls[selected.key];
 control.activate();

在地图上绘制多边形。但是我无法访问这个控件的事件。例如,在绘制结束事件应该给我一个多边形或框。

下面是一个使用控件的featureadded事件的例子。

    // Add a polygon layer to which polygons will be drawn.
    var polygonLayer = new OpenLayers.Layer.Vector("Polygon Layer", {
        projection: "EPSG:4326"
    });
    map.addLayers([polygonLayer]);
    // Initialize the polygon editor.
    var polygonEditor = new OpenLayers.Control.DrawFeature(polygonLayer,
        OpenLayers.Handler.Polygon);
    // And its event listener when the feature is added.
    polygonEditor.events.register('featureadded', polygonEditor, function(evt) {
        // Here, you should see the geometry of the drawn feature in your console.
        var geom = evt.feature.geometry;
        console.log(geom);
    });

和一个小提琴样本