2015-10-16 59 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);