首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在谷歌地图API 3中“一次”只显示一个信息泡

在谷歌地图API 3中“一次”只显示一个信息泡
EN

Stack Overflow用户
提问于 2013-08-13 15:11:48
回答 3查看 2.1K关注 0票数 1

我试着让它一次只显示一个信息泡沫,换句话说,就是用来切换信息泡沫。标记将在for循环中分配此事件处理程序,循环遍历标记数组。

目前,这是一种打开信息泡沫,但从未关闭它的方式。我可以点击多个标记,每个标记都有信息泡,而不关闭前一个。

Iv尝试添加infobuble2.close();,但关闭iv得到了它是,我将不得不点击标记两次,以关闭以前的信息泡沫。

Iv还尝试测试信息泡是否打开,使用infoBubble2.isOpen(),它似乎只是假的。

是的,如果您想知道我尝试过infowindow,而且功能使用得很好,但是由于设计限制,我需要相应地为弹出设置样式,下面是我的代码。

代码语言:javascript
复制
  var infoBubble2;

  google.maps.event.addListener(marker, 'click', function() {

             infoBubble2 = new InfoBubble({
                map: map,
                position: new google.maps.LatLng(-35, 151),
                shadowStyle: 1,
                padding: 0,
                backgroundColor: 'rgb(255,255,255)',
                borderRadius: 4,
                arrowSize: 10,
                borderWidth: 1,
                borderColor: '#2c2c2c',
                disableAutoPan: true,
                hideCloseButton: !0,
                arrowPosition: 30,
                backgroundClassName: 'phoney',
                arrowStyle: 2
              });

            infoBubble2.setContent("some content");
            infoBubble2.open(map, marker);
  });
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-13 20:13:43

我在initialize()函数外声明了infobubble2变量,然后给它分配了新的I泡()的值;在initialize()中,分配给每个标记的onclick事件打开并填充信息泡的内容。

下面是我所做的。谢谢大家的帮助。

代码语言:javascript
复制
var infoBubble2;

function initialize() {
    var myOptions = {
          zoom: zoom,
          minZoom: 0, maxZoom: 20,
          center: myLatLng,
          mapTypeId: maptype,
          mapTypeControl:false,
          streetViewControl:false,
          panControl:false
      };
   map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

   infoBubble2 = new InfoBubble({
            map: map,
            position: new google.maps.LatLng(-35, 151),
            shadowStyle: 1,
            padding: 0,
            backgroundColor: 'rgb(255,255,255)',
            borderRadius: 4,
            arrowSize: 10,
            borderWidth: 1,
            borderColor: '#2c2c2c',
            disableAutoPan: true,
            hideCloseButton: !0,
            arrowPosition: 30,
            backgroundClassName: 'phoney',
            arrowStyle: 2
          });

      $.getJSON('include/jsonCatPoints.php', function(data) {
          for(var i=0; i<data.length;i++){
            placeMarker(data[i]['cat_lat'], data[i]['cat_long'], map);
          }
        });


}//ends initialize

function placeMarker(lat, longg, map) {
      var image = 'img/cat_marker.png';
         marker = new google.maps.Marker({
          position: new google.maps.LatLng(lat,longg),
          map: map,
          icon: image
        });
      makeBubble(map, "test" +lat, marker);
       markers.push(marker);
  }//ends placeMarker


function makeBubble(map, contentString, marker) {
  google.maps.event.addListener(marker, 'click', function() {
        infoBubble2.setContent("message"+contentString);
        infoBubble2.open(map, marker)
 });
}// ends makeBubble
票数 1
EN

Stack Overflow用户

发布于 2013-08-13 15:24:50

试着做这样的事情:

代码语言:javascript
复制
function f_createBalloon(num, marker) {
    balloons[num] = new google.maps.InfoWindow({
        content: ballonInfo[num]
    });
    balloonListeners[num] = new google.maps.event.addListener(marker, 'click',
        function () {
            f_closeBalloons();
            balloons[num].open(map, marker);
        });
}

function f_closeBalloons() {
    for (var j in balloons) {
        if (balloons[j]) balloons[j].close(map, markers[j]);
    }
}
票数 2
EN

Stack Overflow用户

发布于 2013-08-13 15:28:20

如果您希望一次只显示一个对象,那么只创建一个对象并重用它,而不是继续创建新对象并尝试管理它们,如下所示:

代码语言:javascript
复制
 var infoBubble2 = new InfoBubble({
    map: map,
    position: new google.maps.LatLng(-35, 151),
    shadowStyle: 1,
    padding: 0,
    backgroundColor: 'rgb(255,255,255)',
    borderRadius: 4,
    arrowSize: 10,
    borderWidth: 1,
    borderColor: '#2c2c2c',
    disableAutoPan: true,
    hideCloseButton: !0,
    arrowPosition: 30,
    backgroundClassName: 'phoney',
    arrowStyle: 2
  });


  google.maps.event.addListener(marker,'click',function() {
    infoBubble2.close();
    infoBubble2.setContent("some content");
    infoBubble2.open(map, marker);
  });
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18212824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档