gpt4 book ai didi

javascript - 无法返回地理编码 latLng

转载 作者:行者123 更新时间:2023-11-30 09:05:08 28 4
gpt4 key购买 nike

我创建了一个函数来返回纬度和经度。
问题是 alert('outside:')geocoder.geocode 之前触发。

查看this similar example ,这个功能应该工作。

 function getLatLng(geocoder, adr) {
var latLng = '';
geocoder.geocode({
address: adr}, function(results, status){
if (status == google.maps.GeocoderStatus.OK && results.length) {
latLng = results[0].geometry.location;
alert('inside: ' + latLng); // This works
}
}
);
alert('outside: ' + latLng); // This shows NULL
return latLng;
}

那么我需要做什么才能返回 latlng 值?

最佳答案

您会看到这种模式在 JavaScript 中大量用于异步操作 - geocode() 的第二个参数是一个回调函数,当可能代价高昂且长期存在的地理编码操作完成时会调用该函数。如果调用是同步的,它将锁定您的网页和任何其他 JavaScript 代码,直到它返回。

使用异步函数的一个小挫折是它们会立即返回,因此您不能使用return 返回一个值;就像您在地理编码示例中发现的那样 - 对 geocode() 的调用立即返回但没有结果,并在后台运行,稍后使用实际结果调用回调函数。

一种解决方案是在调用 getLatLng 时自己指定一个回调函数:

function getLatLng(geocoder, adr, myCallback){
var latLng = '';
geocoder.geocode({
address: adr
},
function(results, status){
if (status == google.maps.GeocoderStatus.OK && results.length) {
latLng = results[0].geometry.location;
if(myCallback){
myCallback(latlng);
}
}
});
}

关于javascript - 无法返回地理编码 latLng,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5694944/

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