2010-12-12 8 views
0

Ich verwende Google Maps API v3 und muss Marker basierend auf der aktuellen Zoomstufe versetzen.Einstellen globaler Variablen in JS auf Ereignisauslöser - Google Maps API

Ich habe einen globalen Variable current_zoom_level, und einen Ereignis-Listener für Zoom in/out:

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

Ich habe dieses Bit im Initialisierungscode und den Code, der den Offset berechnet, versucht. Die Warnung zeigt die korrekte aktuelle Zoomstufe an, aber wenn ich darauf in build_loan_markers() zugreife (wo ich Offsets errechne), ist current_zoom_level nicht definiert.

Funktion build_loan_markers() {
var offset; Warnung (aktueller_Zoom_level); if (! Window.current_zoom_level) { window.current_zoom_level = 1; } Offset = 1/(window.current_zoom_level^2); alert ('Zoom:' + aktueller_Zoom_Level + 'Offset:' + Offset); usw. }

Wie kann ich diese Variable global festlegen?

+0

Bitte formatieren Sie den Code in Ihrem Beitrag. – plexer

Antwort

0

Um eine Variable global zu machen, deklarieren Sie sie einfach außerhalb jeder Funktionsdefinition.

var current_zoom_level = 0; 

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

function build_loan_markers() { 
    alert(current_zoom_level); 
} 

Sie sollten nicht auf Ihre Variable als window.current_zoom_level zugreifen müssen. Es war unklar, in Ihrem Code, welches der beiden alert(current_zoom_level)s funktionierte, einen Link zu einer Website zu veröffentlichen, die das Problem veranschaulicht.