2016-05-09 6 views
-1

Ich habe Probleme mit der Autocomplete von Google Map Search. Hier ist, was ichWie auf Variablen in Google Map API zugreifen, um in jeder Funktion zu verwenden

function initialize() { 
    directionsDisplay = new google.maps.DirectionsRenderer(); 
    //add map, the type of map 
    var map = new google.maps.Map(document.getElementById('map-canvas'), { 
     zoom: 6, 
     center: haight, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }); 

    autocomplete = new google.maps.places.Autocomplete(document.getElementById('address')); 

    google.maps.event.addListener(autocomplete, 'place_changed', function() { 
     var place = autocomplete.getPlace(); 
     var lat = place.geometry.location.lat(); 
     var lng = place.geometry.location.lng();  
    }); 

    alert(lat); 
} 

versuche Wenn ich versuche, Alarm zu generieren aus addlistner Funktion es nicht funktioniert, aber es ist im Inneren des addlistner arbeiten. Gibt es eine Möglichkeit, wie ich aus diesem Addlistner auf den Lat zugreifen kann?

Und kann ich auch Variable Lat, lng außerhalb der Initialisierungsfunktion in Runtime verwenden?

EDIT

var markers = new google.maps.Marker({ 
    map: map, 
    position: new google.maps.LatLng(lat, lng), 
    title: 'Point of origin' 
}); 

// Add circle overlay and bind to marker 
var circle = new google.maps.Circle({ 
    map: map, 
    radius: 1000*10, // metres 
    fillColor: '#AA0000' 
}); 

circle.bindTo('center', markers, 'position'); 

Ich möchte lat verwenden, um lng variable Marker zu schaffen für Kreis auf bestimmte geografische Breite und Länge zu erzeugen.

+0

Ja, Sie können. Deklarieren Sie Ihre Variablen aus dem Listener. Aber Vorsicht, das ist eine asynchrone Funktion. – MrUpsidown

+0

Danke für die Antwort, es sagt immer noch undefined. –

+0

Was versuchst du zu tun? Das könnte nützliche Informationen sein, wenn Sie Hilfe benötigen. Aktualisieren Sie Ihre Frage mit dem, was Sie getan haben (Code) und was Sie zu tun versuchen. – MrUpsidown

Antwort

1

versuchen, etwas wie folgt aus:

var map; 

function initialize() { 
    directionsDisplay = new google.maps.DirectionsRenderer(); 
    //add map, the type of map 
    map = new google.maps.Map(document.getElementById('map-canvas'), { 
     zoom: 6, 
     center: haight, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }); 

    autocomplete = new google.maps.places.Autocomplete(document.getElementById('address')); 

    google.maps.event.addListener(autocomplete, 'place_changed', function() { 
     var place = autocomplete.getPlace(); 
     var lat = place.geometry.location.lat(); 
     var lng = place.geometry.location.lng(); 

     markerAndCircle(lat, lng); 
    }); 
} 

function markerAndCircle(lat, lng) { 

    var marker = new google.maps.Marker({ 
     map: map, 
     position: new google.maps.LatLng(lat, lng), 
     title: 'Point of origin' 
    }); 

    // Add circle overlay and bind to marker 
    var circle = new google.maps.Circle({ 
     map: map, 
     center: new google.maps.LatLng(lat, lng), 
     radius: 1000 * 10, // metres 
     fillColor: '#AA0000' 
    }); 
} 

Dies ist nicht getestet. Wenn es nicht funktioniert, sehen Sie sich Ihre Javascript-Konsole an und berichten Sie hier.

Hinweis: Die Variable map wird jetzt außerhalb der initialize-Funktion deklariert, da sie in der markerAndCircle-Funktion benötigt wird.

Verwandte Themen