Javascript infowindow.setContent和重叠标记器存在问题

Javascript infowindow.setContent和重叠标记器存在问题,javascript,google-maps-api-3,Javascript,Google Maps Api 3,我一直在和Markerspiderfier打交道 我有一个添加标记的循环,但每个标记都需要一个信息窗口,以具有一些唯一的文本作为其内容 如果我这样做: content = '<div id="info">' + '<p><b><?php echo $row->Event ?></b></p>' + '<p><?php echo $row

我一直在和Markerspiderfier打交道

我有一个添加标记的循环,但每个标记都需要一个信息窗口,以具有一些唯一的文本作为其内容

如果我这样做:

content = '<div id="info">' +
                '<p><b><?php echo $row->Event ?></b></p>' +
                '<p><?php echo $row->Date ?></br>' +
                '<?php echo $row->City . ", " . $row->Country ?></p>' +
                '</div>';

oms.addListener('click', function(myMarker) {
         if(!iw){
            iw = new google.maps.InfoWindow();
         };

       iw.setContent(content);
      //  iw.setContent(myMarker.title);
        iw.open(map, myMarker);
      });
…根本不起作用

谁能透露一些信息


我没有提到:我对javascript比较陌生。

首先,我要设置
iw=new google.maps.InfoWindow()在函数外部,以避免您的
if(!iw)
检查

其次,
oms.addListener
应用于所有标记,而不仅仅是一个标记,因此这不应该在结果循环中(我假设这是一个while$row=$results类型的循环)

要显示正确的内容,您需要在循环中执行类似于
marker.desc=content
的操作,然后在addListener中执行
iw.setContent(myMarker.desc)

比如说:

iw = new google.maps.InfoWindow();

oms.addListener('click', function(myMarker) {
    iw.setContent(myMarker.desc);
    iw.open(map, myMarker);
});

<?php while... { ?>
    ...
    content = '<div id="info">' +
        '<p><b><?php echo $row->Event ?></b></p>' +
        '<p><?php echo $row->Date ?></br>' +
        '<?php echo $row->City . ", " . $row->Country ?></p>' +
    '</div>';
    ...
    marker = new google.maps.Marker({
        ...
        ...
    });
    marker.desc = content;
    oms.addMarker(marker);
<?php } ?>
iw=new google.maps.InfoWindow();
oms.addListener('click',函数(myMarker){
iw.setContent(myMarker.desc);
iw.打开(地图、myMarker);
});
...
内容=“”+
“

”+ “
”+ “

”+ ''; ... marker=新的google.maps.marker({ ... ... }); marker.desc=内容; oms.addMarker(标记器);
首先,我要设置
iw=new google.maps.InfoWindow()在函数外部,以避免您的
if(!iw)
检查

其次,
oms.addListener
应用于所有标记,而不仅仅是一个标记,因此这不应该在结果循环中(我假设这是一个while$row=$results类型的循环)

要显示正确的内容,您需要在循环中执行类似于
marker.desc=content
的操作,然后在addListener中执行
iw.setContent(myMarker.desc)

比如说:

iw = new google.maps.InfoWindow();

oms.addListener('click', function(myMarker) {
    iw.setContent(myMarker.desc);
    iw.open(map, myMarker);
});

<?php while... { ?>
    ...
    content = '<div id="info">' +
        '<p><b><?php echo $row->Event ?></b></p>' +
        '<p><?php echo $row->Date ?></br>' +
        '<?php echo $row->City . ", " . $row->Country ?></p>' +
    '</div>';
    ...
    marker = new google.maps.Marker({
        ...
        ...
    });
    marker.desc = content;
    oms.addMarker(marker);
<?php } ?>
iw=new google.maps.InfoWindow();
oms.addListener('click',函数(myMarker){
iw.setContent(myMarker.desc);
iw.打开(地图、myMarker);
});
...
内容=“”+
“

”+ “
”+ “

”+ ''; ... marker=新的google.maps.marker({ ... ... }); marker.desc=内容; oms.addMarker(标记器);