2017-09-19 37 views
0

我需要在Openlayers 3地图上通过JQuery删除点击事件。如何从Openlayer 3地图中删除JQuery点击事件

的map.on功能是单选按钮的变化里面,并最终创造了点击

map.on('click', function (evt) { 

     var url = temperatura.getSource().getGetFeatureInfoUrl(
     evt.coordinate, viewResolution, viewProjection, 
     { 
      'INFO_FORMAT': 'application/json', 
     }); 
     if (url) { 
      $.getJSON(url, function(result){ 
      var Umidade_Rel = result.features[0]['properties']['Temperatura_2m']; 
      $('#information').removeClass('hidden'); 
      $('#information').css('background-color', '#eaca6a'); 
      $('#information p , #information h3').css('color', '#68a06f'); 
      $('#information').html('<h3>Temperatura</h3><p>' + Umidade_Rel.toFixed(2) + '</p>'); 
      }); 
     } 
     }); 

已经尝试过的几个实例:

map.off('click', myFunction); 

map.removeEvent('click', myFunction); 

map.getViewport().removeEventListener('click', myFunction); 
+0

你为什么要使用jQuery来做到这一点。你使用ol3 api注册事件,然后你想用jquery api删除它。这是不合逻辑的。你可以用'map.un('click'..... – pavlos

+0

谢谢@pavlos 使用ol3 api取消注册事件。由于情况非常紧急,我必须以另一种方式解决这种情况。 我将包括作为答案! 问候! –

回答

0

我设法规避情况用另一种方式。

在我的情况点击事件被创建的每个用户改变该层,所以即使去除从地图的层时,该活性点击事件保持(显示所述去除层的信息)

根据情况是紧急的,我设法通过检查活动图层来绕过这种情况,并且只在地图上排列图层时才显示信息。

if (url && verifyLayer('Mylayer') == 'true'){ 
- code - 
} 

function verificaLayer(name){ 
    var valid = ''; 

    map.getLayers().forEach(function(layer){ 
    var layername = (layer['values ​​_']['name']); 
    if(name == layername){ 
     valid = 'true'; 
    } 
    }); 
return valid; 

}