我似乎无法在fancyBox(即我的信息窗口)中加载InfoBubble。我在InfoBubble中有一个按钮,单击该按钮时,应使用fancyBox显示图像。我曾遇到过以前的问题here和其他几个问题,但这些解决方案都不适用于我。
我设置的方式如下。在index.html
:
<script src="jquery-1.11.1.min.js"></script>
<script src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script src="map.js"></script>
<script src="jquery.fancybox.pack.js"></script>
<script src="infobubble.js"></script>
<script>
$(document).ready(function() {
$(".dialog").fancybox({ width: '50%', height: '50%', closeClick: true });
});
</script>
在map.js
:
infoBubble = new InfoBubble({
maxWidth: 200,
content: '<a class="dialog" href="preview.jpg" target="_blank">
<img src="button-icon.png"/></a>',
position: new google.maps.LatLng(-34.397, 150.644)
});
google.maps.event.addListener(marker, 'click', function() {
infoBubble.open(map, marker);
通过引用CSS类.dialog
,它不应该工作,因为脚本已经在index.html
页面中了吗?它不起作用。相反,我只是被重定向到新页面中的图像。
答案 0 :(得分:1)
在运行之前,您需要等待InfoBubble的domready事件触发:
$(".dialog").fancybox({ width: '50%', height: '50%', closeClick: true });
google.maps.event.addListener(marker, 'click', function () {
infoBubble.open(map, marker);
google.maps.event.addListenerOnce(infoBubble, 'domready', function () {
$(".dialog").fancybox({
width: '200px',
height: '200px',
closeClick: true
});
});
});
答案 1 :(得分:0)
我遇到了同样的问题,我让它像这样工作。
您需要按照geocodezip的建议为domready事件添加一个事件监听器,但需要进行一些修改。简单地用domready事件打开fancybox似乎不起作用。我不确定为什么不。
从大量的小提琴中,我能够发现将代码添加到onclick事件似乎是这样做的。请注意,onclick事件处理程序有两个参数。第一个打开fancybox。第二个向onclick事件处理程序返回false。没有它,页面会在fancybox加载后立即重定向。
google.maps.event.addListener(marker, 'click', function () {
infoBubble.open(map, marker);
google.maps.event.addListenerOnce(infoBubble, 'domready', function () {
var thecode = "$.fancybox.open([{href : 'preview.jpg', type : 'iframe'}]); return false;";
$(".dialog").attr('onclick', thecode);
});
});