javascript - 回调函数中变量的值 - Google map

标签 javascript google-maps google-maps-api-3

我正在尝试获取在陆地(大陆)或水上(海洋)上放置谷歌地图标记的返回值。当我尝试控制台日志时,将标记放置在陆地上时应为 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/

相关文章:

google-maps - 在 Gmap V3 中,如何在短暂延迟后加载 InfoWindow?

javascript - 在cucumber中测试javascript的内容

javascript - Google Maps Api JSON 无法读取 html_instructions

javascript - 谷歌地图 API : Setting up callbacks for adding markers/polyline

javascript - scrollIntoView() 不工作 : does not taking in account fixed element

javascript - 检测覆盖是否包含标记对象。 Google Maps API V3,绘图库

google-maps-api-3 - 鼠标移动时获取折线上的最近点(gMaps v3)

javascript - 如何使用粗黑色轮廓勾勒出条形图的条形?

javascript - 在 React Hook 表单中显示来自 Controller 的错误

javascript - Eslint 不适用于本地系统