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,为什么?我不应该这样设置这些吗?
编辑:我到了应该设置它们的位置,如果我在那里发出警报,我可以看到它们应该设置的值。
答案 0 :(得分:2)
geocoder.geocode
回调没有立即运行,它被推迟到AJAX调用回来之前。范围没有任何问题,变量只有在XHR完成后才会改变。
如果您依赖它们进行更改,请尝试将相关代码(或对函数的调用)放入地理编码器回调函数中。