2015-10-16 91 views
0

我在OpenLayers 3网络地图上有一个按钮,点击后会激活一个函数,在用户单击地图时返回div中的Google街景视图图像。如果div在OpenLayers中关闭,则删除'singleclick'地图事件3

这工作正常,但我想要做的是关闭div时关闭地图点击功能。

目前我有:

$("#street-view").click(function() { 
    map.on('singleclick', function(evt) { 
    var coord = evt.coordinate; 
    var x = coord[0]; 
    var y = coord[1]; 
    var os1w = new OSRef(x, y); 
    var coordres = os1w.toLatLng(os1w); 
    coordres.OSGB36ToWGS84(); 
    xResult = coordres.toLatString(); 
    yResult = coordres.toLngString(); 
    var sv = new google.maps.StreetViewService(); 
    panorama = new google.maps.StreetViewPanorama(document.getElementById('street-view-image')); 
    var googleCoord = new google.maps.LatLng(xResult,yResult); 
    sv.getPanorama({location: googleCoord, radius: 20}, getStreetViewImage); 
    }); 
}); 

function getStreetViewImage(data, status) { 
    if (status === google.maps.StreetViewStatus.OK) { 
    panorama.setPano(data.location.pano); 
    panorama.setPov({ 
     heading: 0, 
     pitch: 0 
    }); 
    $('#street-view-pane').fadeIn("slow"); 
    panorama.setVisible(true); 
    } else { 
    $("#street-view-image").html("Sorry! No Street View images are available at this location."); 
    } 
} 


$("#close-street-view").click(function(evt) { 
    $('#street-view-pane').fadeOut("slow"); 
}); 

我试图创建一个if语句内的for循环,也就是说,当环路大于0,DIV是开放的,然后运行该代码(所以如果该div没有显示,然后什么都不做) - 但这是行不通的。

一旦div关闭,是否有简单的方法来停止singleclick事件?我有一个singleclick事件,可以识别地图上在页面加载时启用的功能,因此我无法禁用所有singleclick功能。

感谢

回答

1

ol.Mapon方法返回该事件侦听器的唯一密钥。如果您希望能够取消事件监听器,请保存该密钥并将其与unByKey方法一起使用。

+0

这样做的工作,谢谢Alvin! – Chris

0

例如:

1. //添加选择事件

this.olSelectkey = this.select.on( '选择',功能(EVT){

//代码

});

//去除选择事件
this.select.unByKey(this.olSelectkey);

2.

//地图单个点击事件

this.mapCursorKey = this.map.on( “singleclick”,功能(EVT){

      var hit = this.forEachFeatureAtPixel(evt.pixel, 
            function(feature, layer) { 
             return true; 
            }); 
          if (hit) { 
           this.getTarget().style.cursor = 'pointer'; 
          } else { 
           this.getTarget().style.cursor = ''; 
          } 
         }); 

//删除光标指针变化事件
this.map.unByKey(this.mapCursorKey);