Google Maps InfoBox未按预期在iOS上触发事件

时间:2013-01-20 10:26:58

标签: jquery ios google-maps google-maps-api-3 mobile-safari

我正在使用信息框。我能够加载所有标记,在每个信息框内加载不同的内容,然后“正确”触发。然后在哪里开始问题:

1)在桌面/ iOS上,我的切换事件在第二次点击后才起作用。基本上它会上下移动一个div。请参阅下面的代码:

//Setting up the marker
 var marker = new google.maps.Marker({
                 map: map,
                 draggable: false,
                 position: latlng6,
                 visible: true
                });

                var boxText = document.createElement("div");
                boxText.class = "test";
                boxText.style.cssText = "height: 0px;";
                boxText.innerHTML =  "<div id='top'><p>SUSSAN</p><a href='#' class='info'>+ info</a>" 
                                    + "<h2></h2>"
                                    + "</div>" 
                                    + "<div id='promo'>"
                                    + "<div class='badge'>"
                                    + "<img src='hot@2x.png'>"
                                    + "</div>"
                                    + "<p>TODAY UP TO 70% OFF</p>"
                                    + "</div>";



                var myOption = {
                         content: boxText
                        ,disableAutoPan: false
                        ,maxWidth: 0
                        ,pixelOffset: new google.maps.Size(-128, -161)
                        ,zIndex: null
                        ,boxStyle: { 
                          background: "url('') no-repeat"
                          ,opacity: 1
                          ,width: "280px"
                          ,height: "0px"

                         }
                        ,closeBoxMargin: "36px 25px 0px 0px"
                        ,closeBoxURL: "http://www.google.com/intl/en_us/mapfiles/close.gif"
                        ,infoBoxClearance: new google.maps.Size(1, 1)
                        ,isHidden: false
                  ,zIndex: 999999
                        ,pane: "floatPane"
                        ,enableEventPropagation: false
                };

                var ib = new InfoBox(myOption);
                boxList.push(ib);



//ANIMATE MORE INFO  
         google.maps.event.addDomListener(boxList[i].content_,'click', function() {

             $("#promo").toggle( function(a) {
             $("#top").animate({top: 14}, 200)},
             function() {
             $("#top").animate({top: 50}, 200);;

          });        

2)在iOS上,即使是第一个问题,当我第一次“点击”div“促销”时,信息框刚刚消失,在桌面上,它不会发生。如果我回来,再次打开信息框并点击div“promo”它就像桌面一样工作。我相信第二个问题与第一个问题有关。但不确定为什么它只发生在iOS上。 = /感谢任何帮助。

查看实时示例http://www.clickin.com.au/fashion/hottie4.html

1 个答案:

答案 0 :(得分:1)

我无法告诉你有关iOS问题的任何信息,但关于第一期问题:

切换处理程序在第一次点击后附加,这就是第一次点击无法触发切换事件的原因。

您可以直接附加切换,而不是等待第一次点击(使用以下代码替换当前的boxList [i] .content_点击处理程序)

$("#promo",boxList[i].content_)
                .toggle( 
                  function(a) {
                    $("#top").animate({top: 14}, 200);
                  },
                  function() {
                    $("#top").animate({top: 50}, 200);
              });