2012-05-07 9 views
10

Sto cercando di ottenere una latitudine e longitudine per indirizzo con il seguente codice:API di Google Maps - geocode() non restituisce lat e lungo

function initialize() { 
    directionsDisplay = new google.maps.DirectionsRenderer(); 
    geocoder = new google.maps.Geocoder(); 
    var address = "HaYarkon 100 TelAviv Israel"; 
    geocoder.geocode({ 'address': address}, function(results, status) { 
    if (status == google.maps.GeocoderStatus.OK) 
     { 
      TelAviv = new google.maps.LatLng(results[0].geometry.location.latitude,results[0].geometry.location.longitude);    
     } 
    }); 

    var myOptions = { 
     zoom:7, 
     mapTypeId: google.maps.MapTypeId.ROADMAP, 
     center: TelAviv 
    } 
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 
    directionsDisplay.setMap(map); 
} 

Il problema è che i risultati [0]. geomety.location.latitude e longitude sono undefinde.

Quello che vedo nei risultati nella console sono i prossimi:

location: O 

    $a: 51.5414691 

    ab: -0.11492010000006303 

Perché si mostrano $ A e AB, invece di latitudine e longitudine

risposta

19

Utilizzare le seguenti funzioni invece di accedere direttamente alla proprietà:

results[0].geometry.location.lat() 

e

results[0].geometry.location.lng() 

Il codice Google è offuscato e utilizza internamente nomi di variabili brevi che possono cambiare da un giorno all'altro.

+0

Eccellente, thx! – Alon

+2

E nel tuo esempio, non devi creare un nuovo 'google.maps.LatLng'; il 'results [0] .geometry.location' _is_ a google.maps.LatLng'. –

+0

@Sean Mickey, forse puoi aiutarti con un altro problema, non riesco a salvare quei dati in una variabile del mio script. Come posso salvarlo e usarlo? – Alon

1

È necessario utilizzare

results[0].geometry.location.lat() 
results[0].geometry.location.lng() 

Utilizzando

results[0].geometry.location[0] 
results[0].geometry.location[1] 

restituisce undefined.

questo è stato molto confuso per me perché l'API a volte ha restituito un campo denominato 'ab' e altre volte restituito 'Za'. Accedere agli elementi in base al loro valore semantico (con .lat e .lng) piuttosto che il nome della stringa esatta è molto più sicuro e più leggibile.

Problemi correlati