我正在尝试获取在陆地(大陆)或水上(海洋)上放置谷歌地图标记的返回值。当我尝试控制台日志时,将标记放置在陆地上时应为 true,将标记放置在水上时应为 false。然而,标记的值似乎落后了一步:例如,将其放置在水上将返回 true,然后将其放置在陆地上将返回 false,但再次将其放置在陆地上将再次返回 true。
如何在地理编码器回调函数中获取“结果”变量的正确值?
为什么我得到的结果滞后?如何解决?
谢谢。
var result = true;
function checkMarkerOnLand(event) {
var geocoder = new google.maps.Geocoder();
geocoder.geocode({
"latLng" : event.latLng
}, function(results, status) {
if (status !== google.maps.GeocoderStatus.OK) {
result = false;
//return result;
} else {
result = true;
//return result;
}
});
return result;
}
最佳答案
回调的要点是:
- 您向服务发送请求(该服务可能位于不同的服务器上)。
- 当服务准备就绪时,它将触发您选择的回调(=您自己编写的函数)。
(这相当于给某人打电话询问 friend 的电话号码。他现在不知道,但他知道后会给你回电话)
发送请求后,代码会继续执行。因此,在发送 geocoder.geocode() 之后,它将立即执行返回结果,早在服务准备就绪之前。
所以不,您不能使用 checkMarkerOnLand() 作为返回结果的函数。 改变你的逻辑,这样无论你计划如何处理该结果,你只需在回调中处理它。
关于javascript - 回调函数中变量的值 - Google map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26715081/