在Openlayers 3中只允许一个绘图功能

时间:2014-12-16 09:11:14

标签: javascript html5 openlayers-3

我正在使用ol.interaction.Draw在地图上绘制点。我想让用户每次点击“绘图”图标时绘制一个唯一的点。 关于如何做到这一点的任何想法?

以下是互动的代码:

function addInteraction() {
draw = new ol.interaction.Draw({
  source: sourceComments,
  type: "Point"
});

draw.on('drawend',
  function(evt) {
    // unset sketch
    sketch = null;
    var allFeatures = comments.getSource().getFeatures();
    var format = new ol.format.GeoJSON();
    document.getElementById('geometry').value =   JSON.stringify(format.writeFeatures(allFeatures), null, 4);
  }, this);

map.addInteraction(draw);
}

谢谢!

2 个答案:

答案 0 :(得分:1)

我有同样的问题,但使用了不同的方法来解决它。我没有使用交互,但在地图中捕获了点击事件。

var pinpointFeature = new ol.Feature();         
var pinpointOverlay = new ol.FeatureOverlay({
    features: [pinpointFeature]
});         

map.on('click', function(event) {
    pinpointFeature.setGeometry(new ol.geom.Point(event.coordinate));
    //do something with your feature if needed
});

答案 1 :(得分:1)

您可以在drawend事件中删除地图上的互动。

var draw;

function addInteraction() {
    draw = new ol.interaction.Draw({
        source: sourceComments,
        type: "Point"
    });

    draw.on('drawend', function(evt) {
        //... unset sketch
        map.removeInteraction(draw);
    }, this);

    map.addInteraction(draw);
}