2017-09-19 1 views
0

Je dois supprimer l'événement click de JQuery sur la carte Openlayers 3.Comment supprimer un événement JQuery click d'une carte Openlayer 3

La fonction map.on est à l'intérieur du changement du bouton radio, et finit par créer plusieurs instances du clic

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>'); 
      }); 
     } 
     }); 

déjà essayé:

map.off('click', myFunction); 

map.removeEvent('click', myFunction); 

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

Pourquoi voulez-vous le faire en utilisant jquery. Vous enregistrez l'événement en utilisant ol3 api et ensuite vous voulez le supprimer en utilisant l'API jquery. Ce n'est pas logique. Vous pouvez annuler l'enregistrement en utilisant l'API ol3 avec 'map.un ('click' .....' – pavlos

+0

Merci @pavlos Comme la situation était très urgente, j'ai dû contourner la situation d'une autre façon. Je vais inclure comme réponse! salutations! –

Répondre

0

j'ai réussi à contourner la situation d'une autre manière.

Dans mon cas, un événement de clic a été créé à chaque fois que l'utilisateur a changé la couche, de sorte que même enlever la couche de la carte, l'événement click actif est resté (affichant les informations de la couche enlevée)

Comme le cas était urgent, j'ai réussi à contourner la situation en vérifiant les couches actives, et en affichant uniquement les informations si la couche est disposée sur la carte.

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; 

}