谷歌地图InfoBubble函数错误参数传递

时间:2012-07-22 12:50:53

标签: javascript api google-maps google-maps-api-3 google-maps-markers

我正在尝试编写一个函数,它给出了一个lat& long,名称和图片作为形式参数,因此点击时将显示地图上的标记:名称和图片。 它似乎有效,但是当我添加多个标记时,最后一个调用的实际参数将传递给所有。因此,每点击Marker,都会弹出相同的名称和图片。

我不知道我在这里做错了什么,因为我认为我把所有事情做好了。

这是我的代码的一部分 在我的Initialise()函数中,我声明了以下内容:

var marker = add_marker(51.21904,4.32659000000001,"Iggy Jensen","bro.jpg"); 
fluster.addMarker(marker);

var marker = add_marker(51.20367,4.341480000000047,"John Doe","bro.jpg");
fluster.addMarker(marker);

var marker = add_marker(51.2041539954234,4.327017528991746,"Joske Vermeulen","bro.jpg"); 
fluster.addMarker(marker);

add_marker函数由我自己编写addMarker是我使用的集群管理系统Fluster2的一部分。

function add_marker(lat,lng,name,pic) {

var marker = new google.maps.Marker({
      position: new google.maps.LatLng(lat,lng),
      map: map,
      icon: 'icon.png',
      title: name
});
    infoBubble = new InfoBubble({
      maxWidth: 300,
      backgroundColor: '#dedddd',
      borderWidth: 2,
      borderColor: 'rgb(68, 68, 68)'
    });

    var contentString = '<div id="content">'+
        '<h2>'+name+'</h2>'+
        '<p><span class="myLabel" style="margin-right:10px">Age </span>21</p>'+
        '<p><center><img src="'+pic+'" class="bro_image"></center> </p>'+
        '</div>';

    var div = document.createElement('DIV');
    div.innerHTML = 'No pictures uploaded by this user.';

    infoBubble.addTab('Personal', contentString);
    infoBubble.addTab('Pictures', div);

    google.maps.event.addListener(marker, 'click', function() {
      if (!infoBubble.isOpen()) {
        infoBubble.open(map, marker);
      }
    }); 

return marker;
  }

   function addTab() {
    var title = document.getElementById('tab-title').value;
    var content = document.getElementById('tab-content').value;

    if (title != '' && content != '') {
      infoBubble.addTab(title, content);
    }
  }

任何帮助表示赞赏!提前谢谢!

1 个答案:

答案 0 :(得分:1)

只需在var定义之前添加“infoBubble”,否则每次将新的InfoBubble对象分配给相同的全局变量时

  var infoBubble = new InfoBubble({
// ^---------here it is