将回调函数与谷歌地理编码结合使用
Using a callback function with Google Geocode
我已经为此苦苦挣扎了几个小时,即使在 Stack 上阅读了几个示例后,我也无法让它工作。 我是JS新手无济于事。
我正在尝试从 Google Geocoder API 检索有关地址的信息,然后将对象传递给另一个函数。 根据我的阅读,我知道我用来检索信息的函数是异步的,因此我需要使用回调函数来读取它。 但是,当我尝试执行此操作时,我的控制台仍然返回"未定义"。 我知道这些信息来自谷歌很好,因为当我在结果对象上使用 console.log() 时它会正确返回。
无论如何,这是我正在使用的:
function onSuccess(position) {
getLocationData(position, function(locationData) {
console.log(locationData);
});
}
function getLocationData(position, callback) {
geocoder = new google.maps.Geocoder();
var location = 'Billings,MT';
if( geocoder ) {
geocoder.geocode({ 'address': location }, function (results, status) {
if( status == google.maps.GeocoderStatus.OK ) {
return results[0];
}
});
}
callback();
}
就像我提到的,我得到的只是"未定义"。 如果我在getLocationData()返回值上方放置"console.log(results[0])",则返回的对象是正确的。 任何帮助将不胜感激。
您的问题是,您没有将回调连接到返回。由于geocode()
函数本身已经是异步的,因此return
在那里没有任何影响。相反,您必须将在此处返回的值直接传递给回调函数。喜欢这个:
function getLocationData(position, callback) {
geocoder = new google.maps.Geocoder();
var location = 'Billings,MT';
if( geocoder ) {
geocoder.geocode({ 'address': location }, function (results, status) {
if( status == google.maps.GeocoderStatus.OK ) {
callback(results[0]);
}
});
}
}
相关文章:
- javascript结合了数组和字典
- 将Firebase与Electron结合使用
- 结合jQuery和jetpack无限滚动
- 将Angular js与taglib结合使用
- 将图像上传ajax与表单提交ajax相结合
- 将地理编码结果转换为php变量以发布到mysql数据库
- Json在完整日历中对数据进行了编码
- 如何对每个用户每天只允许单击一次的按钮进行编码
- Javascript字符集编码
- 如何在javascript转换编码中将一个动态值从一个表单添加到另一个页面
- 将语句与jquery相结合,并使用媒体查询来实现返回页首按钮
- base64编码的图像比intranet中的常规图像好吗
- 我不知道我的编码有什么问题.(JavaScript)
- 为什么字符编码对URL很重要
- 如何在做PHP时在base64中动态编码;preg_ replace”;
- 如何将JSON编码的PHP数组发送到同一页面上的数据表
- 如何使Jquery编码的动态下拉菜单与PHP GET变量协调工作
- JavaScript代码,用于在浏览器中显示字节数组中的PDF文件(非base64编码)
- 将回调函数与谷歌地理编码结合使用
- 如何将html、css和javascript编码结合起来使我的旋转木马工作