2013-04-01 105 views
2

我需要從Postcode中獲取Lat/Lng,因此我使用Google Map/Geocode API。如何從Google Map API函數中獲取javascript lat/lng變量

我無法從Geocode腳本中運行的函數中獲取緯度/經度變量。我使用的代碼如下:

<input id="address" type="textbox" value=""> 
<script type="text/javascript"> 
var lat; 
var lng; 
function addressurls(address) { 
var address = document.getElementById("address").value; 
var geocoder = new google.maps.Geocoder(); 
geocoder.geocode({'address': address}, function postcodesearch(results, status) 
{ 
    if (status == google.maps.GeocoderStatus.OK) 
    { 
    var lat = results[0].geometry.location.lat(); 
    var lng = results[0].geometry.location.lng(); 
    } 
    else { 
    alert("Error"); 
    } 
    return lat; 
    return lng; 
}); 
var laturl = "&lat="; 
var lonurl = "&lon="; 
var postcode = document.getElementById("address").value; 
var addressurl = "/distributors-search?address=" + postcode + laturl + lat+ lonurl + lng; 
parent.location=addressurl; 
} 
</script> 
<input type="button" value="Encode" onclick="addressurls('address'), parent.location=addressurl"> 

有誰知道如何解決它?

+0

我不認爲你可以做到。如果我的理解正確,郵政編碼就像美國的郵政編碼,屬於某個地區。 lat/long屬於某一點。 – Yatrix

+0

如果我在IF語句中提醒變量lat或lng,我得到一個座標,它只是將它從函數中取出。 – trysmudford

+0

叫什麼功能? – Yatrix

回答

2

地理編碼是異步的,則需要在回調函數中使用返回的數據

<input id="address" type="textbox" value=""> 
<script type="text/javascript"> 
var lat; 
var lng; 
function addressurls(address) { 
var address = document.getElementById("address").value; 
var geocoder = new google.maps.Geocoder(); 
geocoder.geocode({'address': address}, function postcodesearch(results, status) 
{ 
    if (status == google.maps.GeocoderStatus.OK) 
    { 
    var lat = results[0].geometry.location.lat(); 
    var lng = results[0].geometry.location.lng(); 
    var laturl = "&lat="; 
    var lonurl = "&lon="; 
    var postcode = document.getElementById("address").value; 
    var addressurl = "/distributors-search?address=" + postcode + laturl + lat+ lonurl + lng; 
    parent.location=addressurl; 
    } 
    else { 
    alert("Error"); 
    } 
}); 

} 
</script> 
<input type="button" value="Encode" onclick="addressurls('address'), parent.location=addressurl"> 
+0

輝煌,謝謝你,先生! – trysmudford

+2

這裏沒有必要重新定義lat和lng,地址也被重新分配。您還調用document.getElementById(「address」)。值兩次並分配給不同的對象 –

相關問題