2013-03-09 11 views
10

Ich verwende die Autocomplete-Methode, um Ortsvorschläge zu erhalten, und wenn ich auf die Stelle, die ich wählen möchte, möchte ich die Lat und Lng, die unter place.geometry.location wie folgt platziert ist extrahieren.Google Maps erhalten LatLng Wert

Firebug Screenshot

Wie pro meine Beobachtung, die Schlüssel ib und jb mit jeder Session ständig ändern. Gibt es eine Möglichkeit, die Lat und Lng vorhersagbar zu extrahieren?

$(document).ready(function() { 

    var mapOptions = { 
     center : new google.maps.LatLng(-33.8688, 151.2195), 
     zoom : 13, 
     mapTypeId : google.maps.MapTypeId.ROADMAP 
    }; 
    var map = new google.maps.Map(document.getElementById('map'), mapOptions); 

    $('#searchTextField').bind('keydown keypress', function() { 
     setTimeout(function() { 
      var inputQuery = $('#searchTextField').val(); 

      if (inputQuery.length >= 2) { 
       //console.log(inputQuery); 

       /* 
       var service = new google.maps.places.AutocompleteService(); 

       service.getPlacePredictions({ 
        input : inputQuery 
       }, callback); 
       */ 

       var input = document.getElementById('searchTextField'); 
       var options = { 
        types : ['geocode'] 
       }; 

       var autocomplete = new google.maps.places.Autocomplete(input, options); 

       // Acting on Selecting a place 
       google.maps.event.addListener(autocomplete, 'place_changed', function() { 
        //infowindow.close(); 
        var place = autocomplete.getPlace(); 

        console.log(place); 
        console.log(place.formatted_address); 
        console.log(place.name); 
        console.log(place.geometry.location); 
        console.log(place.geometry.location[0]); 

        // Show the map to the current location selected 
        if (place.geometry.viewport) { 
         map.fitBounds(place.geometry.viewport); 
        } else { 
         map.setCenter(place.geometry.location); 
         map.setZoom(17); 
         // Why 17? Because it looks good. 
        } 

        var marker = new google.maps.Marker({ 
         position : place.geometry.location, 
         map : map, 
         draggable : true, 
        }); 

        $.each(place.geometry.location, function(key, value) { 
         console.log(key + ": " + value); 
        }); 
       }); 
      } 

     }, 0); 

    }); 
}); 

Antwort

35

place.geometry.location ist ein LatLng, so dass man seine .lat() und .lng() Methoden aufrufen können.

Sie werden sehen, dass diese Methoden in Ihrer Inspektion dieses Objekts vorhanden sind. Verwenden Sie keine undokumentierten Eigenschaften wie die von Ihnen gefundenen ib und jb. Google kompiliert die Google Maps-API mithilfe des Tools Closure Compiler oder eines ähnlichen Tools, das zufällige Namen für private Eigenschaften und Variablen generiert.

+1

vielen Dank: D –

+1

Mein Vergnügen, ich bin froh, dass das hilfreich war. –

+0

glücklich, die Lösung für mein Problem zu finden .. – WorM