javascript – 等待谷歌地图地理编码器?

前端之家收集整理的这篇文章主要介绍了javascript – 等待谷歌地图地理编码器?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
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时,我得到了未定义,也首先提醒苹果,然后是梨.我意识到google以异步方式映射地理编码,但有没有办法让这个工作?

解决方法

你将无法这样做.您对Google的地理编码器进行了异步调用,这意味着您无法让getAddr返回结果.相反,你应该做这样的事情:
getAddr = function(addr,f){
    if(typeof addr != 'undefined' && addr != null) {
        geocoder.geocode( { address: addr,},status) {
          if (status == google.maps.GeocoderStatus.OK) {
            f(results);
          }
        });
    }
    return -1;
}

然后你在代码中使用:

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,status) {
          if (status == google.maps.GeocoderStatus.OK) {
            f('ok',results);
          } else {
            f('error',null);
          }
        });
    } else {
      f('error',null);
    }
}

你可以像这样使用它:

getAddr(addr,function(status,res) {
  // blah blah,whatever you would do with 
  // what was returned from getAddr prevIoUsly
  // you just use res instead
  // For example:
  if (status == 'ok') {
    alert(res);
  } else {
    alert("Error")
  }
});

猜你在找的JavaScript相关文章