2012-05-07 160 views
10

我試圖通過地址用下面的代碼來獲得緯度和經度:谷歌地圖API - 地理編碼()不返回lat和長

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

的問題是,結果[0]。幾何位置,海拔和經度都未知。

我在控制檯結果中看到什麼是下一個:

location: O 

    $a: 51.5414691 

    ab: -0.11492010000006303 

爲什麼它顯示$ a和的直接訪問AB代替緯度和經度

回答

19

使用下面的功能,而不是屬性:

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

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

Google代碼被混淆,並在內部使用可能從一天變爲另一天的短變量名稱。

+0

非常好,thx! – Alon

+2

而在你的例子中,你不必創建一個新的'google.maps.LatLng'; 'results [0] .geometry.location'_is_a google.maps.LatLng'。 –

+0

@Sean Mickey,也許你可以幫助解決另一個問題,我似乎無法將該數據保存到腳本中的變量中。我如何保存並使用它? – Alon

1

必須使用

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

使用

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

返回undefined。

這對我來說非常混亂,因爲API有時會返回一個名爲'ab'的字段,而有時它會返回'Za'。通過它們的語義值(使用.lat和.lng)訪問元素而不是確切的字符串名稱更安全,更具可讀性。

相關問題