当点击一个标记时,地理编码器返回先前存储的值

geocoder is returning previously stored value when click on a marker

本文关键字:返回 编码器 存储 一个      更新时间:2023-11-03

我正在使用谷歌地图api v3(javascript)实现地理编码器。我正在放置多个标记,当我点击标记时,我希望相应的地址出现在信息窗口中。但当我点击标记时,最初地址的默认值(根据代码Geo address Unavailable!)即将到来,当我点击第二个标记时,它具有上次点击的标记的地址。我正在附上这段代码。

    var addr=" Geo-Address Unavailable!";
    var geocoder = new google.maps.Geocoder();
    for(var i = 0; i < latLngs.length-1; i++){ //latLngs is the array of latlongs
       marker = new google.maps.Marker({
        position: latlng,
        id:markerId,
        icon: image,
        map: map,
        animation : google.maps.Animation.DROP,
             });
     }
     markers[markerId] = marker;
      var infowindow = new google.maps.InfoWindow({
                    content: "loading..."
                });
                google.maps.event.addListener(marker, "click", function () {
                    geocoder.geocode({'latLng': this.getPosition()}, function(results, status) {
                        if (status == google.maps.GeocoderStatus.OK) {
                                addr = results[0].formatted_address;
                            }
                    });
                    infowindow.setContent(addr);
                    infowindow.open(map, this);
                });

地理编码是异步的。您必须在地理编码器的回调中使用返回的值。

正在发生的事情:

  1. 您向地理编码器发送一个请求
  2. 显示响应
  3. 响应从地理编码器返回
  4. 你向地理编码器发送了另一个请求
  5. 显示对第一个请求的响应
  6. 从地理编码器返回对第二个请求的响应