我有試圖找到使用谷歌地圖API地理編碼地址的經度和緯度兩個JavaScript函數未定義:JavaScript函數返回的不是數字
function getLatLon(address) {
var location = -1;
geocoder.geocode({ 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var lat = results[0].geometry.location.lat();
var lon = results[0].geometry.location.lng();
location = new Array(lat, lon);
//document.getElementById('results').innerHTML = location[0];
} else {
alert("Geocode was not successful.");
}
});
return location;
}
function search() {
var address = document.getElementById('address').value;
var location = getLatLon(address);
document.getElementById('results').innerHTML = location[0];
}
雖然位置[0]內getLatLon()在#results div中打印出正確的數字,search()中的位置[0]返回undefined。你有什麼想法,爲什麼會發生這種情況?我試過從getLatLon()返回一個純字符串(「Hello」),而且工作得很好。
geocoder.geocode是異步的嗎?如果是,'getLatLon'應該總是返回-1。 *總是* – tjameson
**呃**,我有一個問題。 getLatLon如何返回undefined? 'location'是'-1',所以它也應該返回'-1'。 –
@Derek - 我認爲問題是'location [0]'未定義而不是'getLatLon()'。問題措辭不佳的IMO。 – tjameson