2011-04-08 2 views
0

J'essaie d'ajouter des gestionnaires d'événements mouseenter/mouseleave qui ouvrent des infowindows avec une carte Google Map.Google maps api, addListener à l'événement hover externe

J'ai dix éléments, chacun avec un infowindow Google Maps associé. J'ai ajouté un attribut marqueur de données à mes éléments pour déterminer quel élément correspond aux marqueurs/infowindows respectifs.

Mon problème est que je ne construis pas correctement les variables dans la liste des arguments. Ici, il est:

....standard google maps definition above. double brackets are django context variables within a forloop loop. 

infowindow[{{forloop.counter}}]= new google.maps.InfoWindow({ 
    content:contentString{{forloop.counter}} 
    }); 


var marker{{forloop.counter}} = new google.maps.Marker({ 
    position:latlng{{forloop.counter}}, 
    map:map, 
    icon:image, 
    animation: google.maps.Animation.DROP, 
    title:"Click for more info" 
    }); 


google.maps.event.addListener(marker{{forloop.counter}},'click', function(){ 
    $.each(infowindow, function(name, value){ 
     this.close(); 
    }); 
    infowindow[{{forloop.counter}}].open(map,marker{{forloop.counter}}); 
}); 

{% endfor %}  
{% endif %} 

}

$('.entries').mouseenter(function(){ 
    var num=$(this).attr('data-marker'); 

    $.each(infowindow, function(name, value){ 
    this.close(); 
    }); 

     var mk='marker' 
    m=mk.concat(num); 


    infowindow[num].open(map,m); 

}); 

$('.entries').mouseleave(function(){ 

$.each(infowindow, function(name, value){ 
    this.close(); 
}); 


}); 

De toute évidence, je ne peux pas passer juste une chaîne dans la méthode .Open() et attendre que cela fonctionne. Je suis plus surpris que je ne peux pas passer la variable num »dans l'index du tableau Merci, Brendan

Répondre

1

dans votre code infowindow[num].open(map,m); vous avez m comme une chaîne. m doit être un objet marqueur.

simplement construire un tableau de marqueurs comme vous l'avez fait infowindows et utiliser infowindow[num].open(map,markers[num]);

+0

qui a fait l'affaire. Merci les héros – Ben