使用fancybox时谷歌地图在新窗口中显示图像的问题

时间:2010-11-15 15:22:33

标签: jquery google-maps fancybox kml

在显示KML文件的内容时,我遇到了fancybox和google maps(v3)的一些问题。

当显示包含描述的气球时,我有一个图像的缩略图,我希望在使用fancybox点击时显示该图像。我遇到的问题是,当点击缩略图时,会显示fancybox,但浏览器也会生成一个显示完整尺寸图像的新窗口。

我知道在解析KML文件时,任何href标签都添加了目标属性,因此我在加载地图时尝试将其删除,同时将fancybox附加到链接。

我确保在尝试之前已经加载了地图:即

function updatemap(surveyid){

    var map;

    var myOptions = {
        zoom: 5,
        mapTypeId: google.maps.MapTypeId.HYBRID
    };

    var url = "https://myurl/feed/kml.php?action=survey&id=" + surveyid;

    map = new google.maps.Map(document.getElementById("googlemap"), myOptions);

    var kmlLayer = new google.maps.KmlLayer(url);

    kmlLayer.setMap(map);

    google.maps.event.addListener(map, "tilesloaded", function(){
        attachFancyBox();
    });


}

attachFancyBox()函数如下所示。

function attachFancyBox(){

    $("a:has(img)").fancybox({
        "hideOnContentClick":true
    }).removeAttr("target");

}

现在这将适用于Firefox,但其他浏览器(IE7 +,safari,chrome)就像上面提到的那样。那么有没有一种方法可以实现在fancybox中显示图像而不会产生新的窗口/标签?

非常感谢......

1 个答案:

答案 0 :(得分:0)

对不起,我没时间完全重建您的案例,但可能原因不是target,可能是因为Google Map脚本将click个事件绑定到a标签?在添加精美框之前尝试解除所有事件的绑定:

function attachFancyBox(){
  $("a:has(img)").unbind()
    .fancybox({
      "hideOnContentClick":true
    })
    .removeAttr("target");
}