【问题标题】:Having problems with infowindow.setContent and OverlappingMarkerSpiderfierinfowindow.setContent 和 OverlappingMarkerSpiderfier 有问题
【发布时间】:2012-06-29 17:54:16
【问题描述】:

我一直在玩OVERlappingMArkerSpiderfier

https://github.com/jawj/OverlappingMarkerSpiderfier

我有一个添加标记的循环,但每个标记都需要一个 infoWindow 以将一些独特的文本作为其内容。

如果我执行以下操作:

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);
      });

这只会将最后一个事件放在信息窗口中。

如果我尝试这样做:

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

       iw.setContent(content);
      //  iw.setContent(myMarker.title);
        iw.open(map, myMarker);
      });
})();

...根本不起作用

谁能解释一下。

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

【问题讨论】:

    标签: javascript google-maps-api-3


    【解决方案1】:

    首先,我会在函数之外设置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 } ?>
    

    【讨论】:

      猜你喜欢
      • 2016-08-25
      • 1970-01-01
      • 1970-01-01
      • 2016-06-04
      • 2019-10-09
      • 2023-03-20
      • 1970-01-01
      • 2016-04-22
      • 2015-11-28
      相关资源
      最近更新 更多