Google API循环信息窗口的问题

时间:2015-10-16 15:39:55

标签: javascript arrays google-maps loops google-api

以下代码存在问题.Google地图标记显示正常,但相关信息窗口未在点击时显示。点击后,没有任何动作发生。有什么建议?谢谢!

var length = data[0].length;

var infowindow = [];
var contentString = [];
var marker = [];

for (var i = 0; i < length; i++) {

    var x = data[0][i].number;

    var pos = new google.maps.LatLng(data[0][i].lat, data[0][i].long);

    marker[i] = new google.maps.Marker({
        position: pos,
        map: map,
        icon: 'http://maps.google.com/mapfiles/ms/icons/' + data[0][i].color + '-dot.png',
        description: data[0][i].providerfirst,
        id: i
    });

    //document.write(marker[i].icon);


    contentString[i] = '<div id="content" class="infowindow">' +
        '<div id="siteNotice">' +
        '</div>' +
        '<h1 id="firstHeading" class="firstHeading"> ' + data[0][i].providerfirst + ' ' +
        data[0][i].providerlast + ', ' + data[0][i].credentials + '</h1>' +
        '<p>' +
        data[0][i].address + '<br>' +
        data[0][i].city + ', ' + data[0][i].state + ', ' + data[0][i].zip + '<br>' +
        '</p>' +
        '<p>NPI: ' + data[0][i].npi + '</p>' +
        '<p>Network: ' + data[0][i].type + '</p>' +
        '<div id="bodyContent">' +
        '</div>' +
        '</div>';

    //document.write(contentString[i]);


    //document.write(infowindow[i].content);

    infowindow[i] = new google.maps.InfoWindow({
        content: contentString[i]
    })

}

2 个答案:

答案 0 :(得分:0)

你需要把

contentString[i]  = '<div id="content" class="infowindow">' +
                      '<div id="siteNotice">' +
                      '</div>' +
                      '<h1 id="firstHeading" class="firstHeading"> ' + data[0][i].providerfirst + ' ' + 
                      data[0][i].providerlast + ', ' + data[0][i].credentials + '</h1>' +
                      '<p>' + 
                      data[0][i].address + '<br>' +
                      data[0][i].city + ', ' + data[0][i].state + ', ' + data[0][i].zip + '<br>' +
                      '</p>' +
                      '<p>NPI: ' + data[0][i].npi + '</p>' +  
                      '<p>Network: ' + data[0][i].type + '</p>' +
                      '<div id="bodyContent">' +
                      '</div>' +
                      '</div>';

                      //document.write(contentString[i]);


                    //document.write(infowindow[i].content);

                  infowindow[i] = new google.maps.InfoWindow({
                    content: contentString[i]})

这部分代码在

这样的函数中
function setInfoWindow(i){
//all this here
}

你需要了解javascript概念 https://www.youtube.com/watch?v=8aGhZQkoFbQ

答案 1 :(得分:0)

你需要一个点击处理程序,只是因为你创建了infowindow和数据,你没有以任何我能看到的方式关联它们

marker[i].addListener('click',function(){
    infowindow[i].open(map,marker[i]);
});