2014-06-16 2 views
1

Je veux que l'infobox soit fermée lorsque la souris quitte la zone de marqueur et d'infobox. Le problème est que la façon dont j'essaie de vérifier si la souris est sur l'infobox ne fonctionne pas.Google maps marqueurs, fermer l'infobox lorsque la souris quitte le marqueur et infobox

EDIT: Ceci est la fonction que je utilise le savoir:

google.maps.event.addListener(marker, 'mouseout', (function(marker, contentString) { 
     return function() { 
      ib.close(); 
     }; 
    })(marker, contentString)); 
+1

Quand/comment le Infobox ouvert? Y en a-t-il plus d'un? –

+1

En outre, un jsfiddle fonctionnant comportant votre infobox courant m'aiderait à te donner l'aide dont vous avez besoin –

+1

Il n'y a aucune carte à l'URL que vous avez mentionnée; seulement une erreur: "google n'est pas défini" –

Répondre

4

Tout d'abord, votre Infobox chevauche le marqueur, donc une fois qu'il ouvre provoquera une mouseout sur le marqueur, et cela le fermera immédiatement.

Vous devez également ajouter des événements à l'élément infobox.

Vous pouvez le faire sur l'événement domready de l'infobox, car il est ajouté dynamiquement au DOM. Et puis vous devez mettre un délai sur l'événement mouseout du marqueur que vous effacerez si l'utilisateur mouseenters l'infobox.

Quelque chose comme ça

var ibTimeout; 
google.maps.event.addListener(marker, "mouseover", function (e) { 
    ib.open(theMap, this); 
}); 
google.maps.event.addListener(marker, "mouseout", function (e) { 
    ibTimeout = setTimeout(function(){ 
     ib.close(); 
    }, 50); 
}); 
google.maps.event.addListener(ib, 'domready', function(e){ 
    $('.infobox').on('mouseenter', function(e){ 
     clearTimeout(ibTimeout); 
    }).on('mouseleave', function(e){ 
     clearTimeout(ibTimeout); 
     ib.close(); 
    }); 
}); 

Démo à http://jsfiddle.net/gaby/t4cPt/39/

+0

@ gaby-aka-g-petrioli votre démo ne fonctionne pas. Pouvez-vous vérifier? –

+0

@Rituparnasonowal mise à jour du violon. Le problème est que le plugin InfoBox n'est plus hébergé par google-code mais a été déplacé vers github. –

+0

@ gaby-aka-g-petrioli, ouais je l'ai compris. Merci pour la bonne solution. –

0
google.maps.event.addListener(marker, 'mouseout', (function() {   
      infowindow.close(); 
}); 

google.maps.event.addListener(infowindow, 'mouseout', (function() {   
      this.close(); 
});