проблемы с отображением изображений в новом окне при использовании fancybox на карте Google - PullRequest
2 голосов
/ 15 ноября 2010

У меня возникли некоторые проблемы с fancybox и картами Google (v3) при отображении содержимого файла KML.

При отображении всплывающей подсказки, содержащей описание, у меня есть эскиз изображения, которое я хочу отобразить при нажатии с помощью 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 голосов
/ 01 декабря 2010

Извините, у меня нет времени на полное восстановление вашего дела, но может быть причина не в target, может быть причина в том, что скрипт Google Map привязывает click события к тегу a? Попробуйте отменить привязку всех событий, прежде чем прикрепить необычную коробку:

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