-1

我正在做一个小小的 phonegap + google maps 项目。我有一组标记,locations,放置在地图上。现在我想创建单击标记时会弹出的信息窗口。使用下面的代码,它成功地为最后生成的制造商创建了一个信息窗口,但不是前一个。我有一种感觉,我一遍又一遍地覆盖同一个变量,但我还不是很流利。我是否需要创建一个变量数组并将其包含在循环中?

谢谢!

for(var i = 0; i < locations.length; i++ ) {
            var myLatLng = new google.maps.LatLng(locations[i].lat_long.lat, locations[i].lat_long.lon);
            bounds.extend (myLatLng);
            var marker = new google.maps.Marker({
              position: myLatLng,
              map: map,
              title: locations[i].name,
              zIndex: i
            });
            map.fitBounds(bounds);
            var contentString = '<div id="content">'+
                    '<div id="siteNotice">'+
                    '</div>'+
                        '<h2 id="firstHeading" class="firstHeading">'+locations.name+'</h2>'+
                        '<div id="bodyContent">'+
                        '</div>'+
                '</div>';

            var infowindow = new google.maps.InfoWindow({
                content: contentString
            });
        }
        google.maps.event.addListener(marker, 'click', function() {
            infowindow.open(map,marker);
            console.log(marker);
        });
4

1 回答 1

2

想通了。做了一个处理它的函数

    for(var i = 0; i < locations.length; i++ ) {
        var myLatLng = new google.maps.LatLng(locations[i].lat_long.lat, locations[i].lat_long.lon);
        bounds.extend (myLatLng);
        var marker = new google.maps.Marker({
          position: myLatLng,
          map: map,
          title: locations[i].name,
          zIndex: i
        });
        map.fitBounds(bounds);
        buildInfoWindow(marker,map,locations[i]);
    }

功能

function buildInfoWindow(marker,map,locations){
    var contentString = '<div id="content">'+
                        '<div id="siteNotice">'+
                        '</div>'+
                            '<h2 id="firstHeading" class="firstHeading">'+locations.name+'</h2>'+
                            '<div id="bodyContent">'+
                            '</div>'+
                    '</div>';

    var infowindow = new google.maps.InfoWindow({
        content: contentString
    });
        google.maps.event.addListener(marker, 'click', function() {
        infowindow.open(map,marker);
        console.log(marker);
    });
}
于 2013-08-30T01:26:31.207 回答