2010-12-12 80 views
0

J'utilise Google Maps API v3 et j'ai besoin de décaler les marqueurs en fonction du niveau de zoom actuel.Définition de variables globales dans JS sur déclencheur d'événements - API Google Maps

J'ai une current_zoom_level variable globale, et un écouteur d'événement pour zoom in/out:

google.maps.event.addListener (carte, 'zoom_changed', function() { current_zoom_level = map.getZoom (); alerte (current_zoom_level); });

J'ai essayé ce bit dans le code d'initialisation et le code qui calcule le décalage. L'alerte affiche le niveau de zoom actuel correct, mais lorsque j'y accède dans build_loan_markers() (où je calcule les décalages) current_zoom_level n'est pas défini.

fonction build_loan_markers() {
var offset; alert (current_zoom_level); if (! Window.current_zoom_level) { window.current_zoom_level = 1; } offset = 1/(window.current_zoom_level^2); alert ('zoom:' + current_zoom_level + 'offset:' + offset); etc. }

Comment puis-je définir globalement cette variable?

+0

Veuillez mettre en forme le code dans votre message. – plexer

Répondre

0

Pour rendre une variable globale, déclarez-la simplement en dehors de toute définition de fonction.

var current_zoom_level = 0; 

function something() { 
    // Add your listener here 
} 

function build_loan_markers() { 
    alert(current_zoom_level); 
} 

Vous ne devriez pas avoir besoin d'accéder à votre variable en tant que window.current_zoom_level. Il n'était pas clair à partir de votre code lequel des deux alert(current_zoom_level)s fonctionnait, pensez à poster un lien vers un site qui démontre le problème.