var lat = 0.0;
var lng = 0.0;
var jsonData = null;
var geocoder = new google.maps.Geocoder();
var miles = $('#milesAway').val();
// find what the user is locating by
if ($('#zipCode').is(':visible'))
{
var zipText = $('#zipCode').val();
if (isValidUSZip(zipText))
{
geocoder.geocode( {
'address': zipText
}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
lat = results[0].geometry.location.lat();
lng = results[0].geometry.location.lng();
map.setCenter(results[0].geometry.location);
} else {
alert("Zip Code couldn't be located.");
}
});
}
else
{
alert('Please enter a valid US zip code.');
}
}
这东西跑完后,lat和lng还是设置为0.0,为什么呢?我不能像这样设置这些吗?
编辑:我也到了应该设置它们的地步,如果我在那里发出警报,我可以看到它们应该设置的值。
最佳答案
geocoder.geocode
回调不会立即运行,它会延迟到 AJAX 调用返回。作用域没有问题,只是在 XHR 完成之前变量不会更改。
如果您依赖于它们被更改,请尝试将您的依赖代码(或对函数的调用)放入地理编码器回调函数中。
关于javascript - 在javascript中从内部范围设置外部范围变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5587708/