Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Marker需要两次单击才能从ajax调用中获得正确的信息_Javascript_Jquery_Ajax_Google Maps - Fatal编程技术网

Javascript Marker需要两次单击才能从ajax调用中获得正确的信息

Javascript Marker需要两次单击才能从ajax调用中获得正确的信息,javascript,jquery,ajax,google-maps,Javascript,Jquery,Ajax,Google Maps,我正在使用谷歌地图API。 我正在尝试使用ajax调用更新infowindow中标记的响应,但需要单击两下才能使用以下代码获取内容: google.maps.event.addListener(marker, 'click', (function(marker, i) { //infowindow.setContent("Loading..."); return function() {

我正在使用谷歌地图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));
google.maps.event.addListener(标记,'click',(函数(标记,i)
{
//infowindow.setContent(“加载…”);
返回函数(){
var abb=位置[i][3];
var线=位置[i][4];
var to1=位置[i][5];
//控制台日志(abb);
getTimes(abb,line,to1,函数(result){
html1=“”;
html1+=结果;
//警报(html1);
//console.log(html1);
});
//console.log(html1);
infowindow.setContent(位置[i][0]+“
”+html1); 打开(地图,这个); } })(marker,i));
有人知道这个问题的解决方法吗


谢谢

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

在回调函数中打开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));
google.maps.event.addListener(标记,'click',(函数(标记,i){
返回函数(){
var abb=位置[i][3];
var线=位置[i][4];
var to1=位置[i][5];
getTimes(abb,line,to1,函数(result){
html1=“”;
html1+=结果;
infowindow.setContent(位置[i][0]+“
”+html1); 打开(地图,这个); }); } })(marker,i));
请提供一个演示此问题的示例。非常感谢。这很有效。