gpt4 book ai didi

javascript - 从谷歌地图回调函数返回值

转载 作者:行者123 更新时间:2023-11-28 16:31:26 30 4
gpt4 key购买 nike

您好,我正在使用谷歌地图 API我有这么大的代码,所以我不想用代码吓跑人们基本上这就是我需要做的

我有一个 javascript(1) 函数,在有人单击按钮后我从 Html 调用该函数,从该函数中,我进行一些处理来计算纬度和经度,并调用一个使用纬度和经度的自定义函数,并调用谷歌地图函数。我需要将 google map 回调函数的值传递回 javascript 函数 (1)

事情是这样的

--------------首先文件.html----------------

<script type="text/javascript" src="functions.js"></script>
<script type="text/javascript">
function docalculation
{
.....some calculations for latlng......
var value = get_value(latlng);
}
</script>
<html>
.....html file....
<input type="button" value="Create Directions" onClick="docalculation()">
</html>

--------------------文件函数.js----------------

var return_val;
function get_val(latlng)
{
geocoder = new google.maps.Geocoder();
geocoder.geocode({'latLng': latlng}, function(results, status) {

return_val = (results[0].address_components[i].long_name);
alert(return_val); //here I get the value that I need in alert
}

alert (return_val); // here the value suddenly becomes undefined
return val; // hence returns undefined
}

请帮助我,我被困在这里,即使经过两天的谷歌搜索和尝试我所知道的一切也找不到解决方案。

感谢任何帮助

我正在寻找的最简单的解决方案是将 return_val 的值存储到变量值中

谢谢

最佳答案

这是因为 geocode() 是异步的:它立即返回,但响应到达后立即调用回调函数。您需要在 get_val() 中接受回调并将值传递给此方法,而不是尝试返回它(这是不可能的):

function get_val(latlng, cb) {
geocoder = new google.maps.Geocoder();
geocoder.geocode({
'latLng': latlng
}, function (results, status) {
cb(results[0].address_components[i].long_name);
});
}

用法:

get_value(latlng, function(longName) {
/* do something */
});

关于javascript - 从谷歌地图回调函数返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5797095/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com