8

我在网上到处搜索,但找不到使用 jQuery 在 Google 地图中淡化 InfoBox/InfoWindow 的教程或示例,而不是实际框/窗口的内容。这是我的代码,我不确定我做错了什么,但似乎也有些不对劲。

google.maps.event.addListener(marker, 'mouseover', function() {
    ib.setContent(html);
    ib.open(map, marker);
    ib.setValues({type: "point", id: 2})

   var idName = marker.get("id"); //I was trying to the id's of the elements here 
   var boxName = ib.get("id");    //to use in my jQuery

   jQuery(idName ).mouseover(function() {
      jQuery(boxName ).fadeIn('slow', function() {
    // Animation complete
   });
  });

});
4

6 回答 6

12

实际上可以淡入信息框,您必须像这样覆盖 infobox.js 文件中的绘图功能

var oldDraw = ib.draw;
ib.draw = function() {
   oldDraw.apply(this);
   jQuery(ib.div_).hide();
   jQuery(ib.div_).fadeIn('slow'); 
}
于 2011-10-17T05:17:50.307 回答
5

我为一个网站尝试了类似的东西。这是我的代码。(gm-api-v3)

var infowindow = new google.maps.InfoWindow({
    content: contentString
});

function iwFadeIn() {
    infowindow.open(map, marker);
    var iw_container = $(".gm-style-iw").parent();
    iw_container.stop().hide();
    iw_container.fadeIn(1000);
}
于 2013-08-16T22:45:51.987 回答
1

如果您覆盖 draw 方法并应用淡入,即使您在地图中拖动或放大/缩小动画也会播放。如果您不希望发生这种情况,您可以在 domready 处理程序中应用淡入方法。在这种情况下,只有在打开信息窗口时才会出现淡入效果。

 google.maps.event.addListener(ib, 'domready', function() {
            jQuery(ib).hide().fadeIn('slow');
 })

;

于 2012-10-12T08:41:00.440 回答
0

我正在使用带有标签的谷歌实用程序库标记(http://google-maps-utility-library-v3.googlecode.com/svn/tags/markerwithlabel/1.1.5/docs/examples.html

在标签上使用 jquery 很容易。

google.maps.event.addListener(marker, "mouseover", function (e) { 
    //console.log(this); this.label.labelDiv_.style.display = 'block'; 
    $(this.label.labelDiv_).fadeIn();
});

google.maps.event.addListener(marker, "mouseout", function (e) { 
    //this.label.labelDiv_.style.display = 'none'; 
    $(this.label.labelDiv_).fadeOut();
});
于 2012-04-10T10:55:46.527 回答
0

通过添加class和setTimeout可以实现fadeOut效果。让我解释。

例如:

$('.close-el')
        .on('click', function(e) {
            e.stopPropagation();
            $(infobox.div_).addClass('is-closing');
            setTimeout(function() {
                infobox.close();
            }, 700);
    }); 

当您添加 CSS 类时,并且在 css 转换结束后关闭信息框

和 CSS (sass) (.infoBox 是保留类)

.infoBox {
    &.is-closing {
        transition: transform 400ms, opacity 400ms;

        transform: translate3d(0, 30px, 0);
        opacity: 0;
    }
}
于 2016-07-26T21:44:58.183 回答
-1

我认为这是不可能的,因为 Google 不提供动画选项。

尝试获取 Dom 元素也不行。ib 变量是 google.maps.InfoWindow 类而不是 DOM 元素。由于没有公共接口来获取信息窗口的 DOM 元素,您将无法自己访问它。

如果您使用console.log(ib.get("id")),您将看到 ID 未定义。

于 2011-10-11T01:27:24.770 回答