OL3删除dragbox交互

时间:2015-07-02 21:19:35

标签: javascript extjs openlayers-3

我想删除我在js课程中添加的地图的互动,但是当我尝试在其他课程中删除该互动时,我不知道该怎么做,因为我无法访问到我需要的类中的交互对象.....

我有这段代码(我添加了互动):

...
var dragBox = new ol.interaction.DragBox({
        condition: ol.events.condition.always,
        style: new ol.style.Style({
            stroke: new ol.style.Stroke({
                color: [0, 0, 255, 1]
            })
        })
    });

    mapa.addInteraction(dragBox);

    dragBox.on('boxend', function(e) {
        if (capaActiva != null) {
            var info = [];
            var extent = dragBox.getGeometry().getExtent();
            var ext = extent.toString().split(',');

            var ext1 = ext[0];
            var ext2 = ext[1];
            var ext3 = ext[2];
            var ext4 = ext[3];

            var tfn = ol.proj.getTransform('EPSG:3857', 'EPSG:4326');
            var textent = ol.extent.applyTransform([ext1, ext2, ext3, ext4], tfn).toString();
...

用于删除交互的js类:

...
cerrar: function(){
    mapa.removeInteraction(dragBox);
}
...

在第二节课中我得到错误:

dragBox is not defined

如何在第二节课中访问和删除交互?

1 个答案:

答案 0 :(得分:1)

需要在两个范围内都可以访问dragBox。

没有看到更多的代码很难说,但你可以做到

this.dragBox = new ol.interaction.DragBox({
        condition: ol.events.condition.always,
        style: new ol.style.Style({
            stroke: new ol.style.Stroke({
                color: [0, 0, 255, 1]
            })
        })
    });

    mapa.addInteraction(this.dragBox);

    this.dragBox.on('boxend', function(e) { ......

.......................
cerrar: function(){
    mapa.removeInteraction(dragBox);
}

如果它们不在同一个对象中,那么您需要确保可以从两个范围访问dragbox变量