Marker需要两次点击才能从ajax调用中获取正确的信息

时间:2015-02-27 04:18:51

标签: javascript jquery ajax google-maps

我正在使用Googlemaps API。 我尝试使用ajax调用更新标记的infowindow中的响应,但需要两次单击才能使用以下代码获取内容:

    google.maps.event.addListener(marker, 'click', (function(marker, i) 
            {
            //infowindow.setContent("Loading...");
            return function() {

            var abb = locations[i][3];
            var line = locations[i][4];
            var to1 = locations[i][5];

            //console.log(abb);

            getTimes(abb, line, to1, function(result) {
                html1 = "";

                html1 += result;

                //alert(html1);
                //console.log(html1);

            });
            //console.log(html1);
            infowindow.setContent(locations[i][0] + "<br>" + html1);
            infowindow.open(map, this);

            }
            }) (marker, i));

有没有人知道修复此问题?

感谢。

1 个答案:

答案 0 :(得分:0)

getTimes函数是异步的,第一次点击只会请求响应,infowindow将不会有任何内容,因此不会打开。当您第二次单击时,内容将被缓存,并且将可用并且信息窗将打开。

在回调函数中打开infowindow。

google.maps.event.addListener(marker, 'click', (function(marker, i) {
  return function() {
    var abb = locations[i][3];
    var line = locations[i][4];
    var to1 = locations[i][5];

    getTimes(abb, line, to1, function(result) {
      html1 = "";
      html1 += result;
      infowindow.setContent(locations[i][0] + "<br>" + html1);
      infowindow.open(map, this);
    });
  }
}) (marker, i));