Javascript 等待谷歌地图地理编码器?
因此,当我调用getAddr时,我得到了未定义的消息,同时苹果会首先收到警报,然后是pear。我意识到谷歌地图的地理编码是异步的,但有没有办法做到这一点呢?你不能这样做。您对google的geocoder进行了异步调用,这意味着您将无法让getAddr返回结果。相反,您应该这样做:Javascript 等待谷歌地图地理编码器?,javascript,google-maps,Javascript,Google Maps,因此,当我调用getAddr时,我得到了未定义的消息,同时苹果会首先收到警报,然后是pear。我意识到谷歌地图的地理编码是异步的,但有没有办法做到这一点呢?你不能这样做。您对google的geocoder进行了异步调用,这意味着您将无法让getAddr返回结果。相反,您应该这样做: geo = function(options){ geocoder.geocode( options, function(results, status) { if (status == go
geo = function(options){
geocoder.geocode( options, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var x = results;
alert('pear');
return x;
} else {
return -1;
}
});
}
getAddr = function(addr){
if(typeof addr != 'undefined' && addr != null) {
var blah = geo({ address: addr, });
alert('apple');
return blah;
}
return -1;
}
然后在代码中使用这样的代码:
getAddr = function(addr, f){
if(typeof addr != 'undefined' && addr != null) {
geocoder.geocode( { address: addr, }, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
f(results);
}
});
}
return -1;
}
getAddr = function(addr, f){
if(typeof addr != 'undefined' && addr != null) {
geocoder.geocode( { address: addr, }, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
f('ok', results);
} else {
f('error', null);
}
});
} else {
f('error', null);
}
}
编辑:如果需要,还可以添加更多状态验证:
getAddr(addr, function(res) {
// blah blah, whatever you would do with
// what was returned from getAddr previously
// you just use res instead
// For example:
alert(res);
});
你可以这样使用它:
getAddr = function(addr, f){
if(typeof addr != 'undefined' && addr != null) {
geocoder.geocode( { address: addr, }, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
f(results);
}
});
}
return -1;
}
getAddr = function(addr, f){
if(typeof addr != 'undefined' && addr != null) {
geocoder.geocode( { address: addr, }, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
f('ok', results);
} else {
f('error', null);
}
});
} else {
f('error', null);
}
}