2012-05-07 19 views
10

Aşağıdaki kod ile adresi ile bir enlem ve boylam almaya çalışıyorum:Google Maps API - coğrafi kod() dönmez enlem ve uzun

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); 
} 

sorun olduğunu sonuçları [0]. geomety.location.latitude ve boylam undefinde. Ben konsolunda sonuçlarında bakın ne

sonraki şunlardır:

location: O 

    $a: 51.5414691 

    ab: -0.11492010000006303 

Neden $ a gösterir ve ab yerine doğrudan ulaşma aşağıdaki işlevleri yerine enlem ve boylam

cevap

19

kullanı özellikleri:

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

ve

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

Google kodu gizleniyor ve dahili olarak bir günden diğerine değişebilen kısa değişken adlar kullanıyor.

+0

Mükemmel, thx! – Alon

+2

Ve örneğinizde, yeni bir 'google.maps.LatLng' oluşturmak zorunda değilsiniz; 'Sonuçlar [0] .geometry.location' _is_ google.maps.LatLng'. –

+0

@Sean Mickey, Belki başka bir problemde yardımcı olabilirsiniz, bu veriyi senaryodaki bir değişkene kaydedemiyorum. Bunu nasıl kaydedip kullanabilirim? – Alon

1

Sen tanımsız

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

döner kullanma

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

kullanmak zorundadır. Bu, benim için çok kafa karıştırıcı oldu çünkü API bazen 'ab' adında bir alan verdi ve diğer zamanlarda 'Za' döndü. Öğelere tam dize adı yerine semantik değerlerine (.lat ve .lng ile) erişmek çok daha güvenli ve okunabilir.