谷歌地图 - 信息气泡"closeclick"的事件侦听器 .如何设置?



如何为事件设置监听器关闭InfoBubble?我使用谷歌地图API v.3和编译的infobubble脚本。它不起作用:

infoBubble = new InfoBubble({
  maxWidth: 500
});
infoBubble.open(map, marker);
google.maps.event.addListenerOnce(bubble, 'domready', function(){ 
   google.maps.event.addDomListener(infoBubble, 'close', function() {  
      alert("Closed");
   }); 
}); 

找到解决方案。这太平庸了。没有记录的坏消息。必须学习反编译的代码。

        google.maps.event.addListener(infoBubble, 'closeclick', function(){
            console.info("I'm Closed");
        });

无需使用addListener关闭Opened InfoBubble。(在许多情况下可能会对您有所帮助,但对于简单的应用程序,我们不需要它)

只需像打开方法一样使用关闭方法即可打开infoBubble。

示例:

用于打开InfoBubble(你知道吗)

var infoBubble = new InfoBubble({
  maxWidth: 500
});

用于关闭InfoBubble

infoBubble.close();

我的函数:

function createMarker(point, mOptions, mType, html1, html2, pointX, units) {
    /** -------------
    *     Variable  
    **/
    var Title   = mOptions.title;
    var Name    = mOptions.name;
    var Mode    = mOptions.mode;
    var MiniMode= mOptions.mini;
    var User_id = mOptions.user;
    var id = mOptions.id;
    markersOptions.push(id);
    markersOptions[id] = {avatar: ''};
    if(!Mode){
        var Author = mOptions.author;
        var Event_id = mOptions.event;
        var Picture = mOptions.pic;
        var add_form  = create_adcomm_form(2, Event_id);
        var add_foto  = create_adfoto_form(2, Event_id);
        var comm_header = create_comm_head(Event_id);
        var links_block = create_links(Event_id);
    }   
    /** --------------------
    *    Create new Marker  
    **/
    var marker = new google.maps.Marker({
        position: point, 
        map: map,
        icon: mOptions.icon,
        title: mOptions.title
    });

    google.maps.event.addListener(marker, 'click', function() 
    {
        /**
        *  Add Polyline & Distance 
        **/
        var path = [pointX, point];
        clear_polyline();
        var polyline_shadow = new google.maps.Polyline({
            path: path,
            strokeColor: '#000000',
            strokeOpacity: .6,
            strokeWeight: 3,
            map: map
        });
        pline.push(polyline_shadow);
        var polyline = new google.maps.Polyline({
            path: path,
            strokeColor: '#FFFF00',
            strokeOpacity: 1.0,
            strokeWeight: 2,
            map: map
        });
        line.push(polyline);

        var dist = polyline.inKm();
        var calc = (units == 'miles') ? "1.609344" : "1";
        var distance = (dist/calc);
        var distanceText = (distance) ? "<br />"+Lng[8]+": " + formatNumber(distance,2,',','.','','','-','') + " " + units: '';
        /**
        *  END Polyline & Distance 
        **/     
        if(!Mode){  // Add Listener for Event
        ....... Other       
        }else{ // Add Listener for Users
            html2 = '<div style="overflow:auto;">'+html2+'</div>';
            infoBubble.close();
            infoBubble = new InfoBubble({
              maxWidth: 500,
              minWidth: 300,
              minHeight: 300
            });
            infoBubble.open(map, marker);

            var divUser = document.createElement('DIV');
            divUser.setAttribute("align", "center");
            divUser.innerHTML = html1 + distanceText;
            var divUser2 = document.createElement('DIV');
            divUser2.setAttribute("align", "center");
            divUser2.innerHTML = html2;
            infoBubble.addTab(Lng[9], divUser);
            infoBubble.addTab(Lng[10], divUser2);
            google.maps.event.addListener(marker, 'click', function() {
              if (!infoBubble.isOpen()) {
                infoBubble.open(map, marker);
              }
            });
            var is_ava = get_avatar(User_id, markersOptions[id], id);
            console.info('IS AVA:   '+is_ava);
        }       
    });
    google.maps.event.addListenerOnce(infoBubble, 'domready', function(){ 
       google.maps.event.addDomListener(infoBubble, 'close', function() {  
          console.info("Closed");
          //clear_polyline();  // <----- HOW ? 
       }); 
    });
    markers.push(marker);
    return marker;
}
function clear_polyline(){
    for (i=0; i<line.length; i++) {                           
        line[i].setMap(null); 
        pline[i].setMap(null);
    }
}
function get_avatar(User_id, markersOptionsID, id){    
    var avatar = markersOptionsID.avatar;
    if(!avatar || avatar == ''){
        jQuery.ajax({
            type: "GET",
            url: "ajax/jq_ajax.php",
            data: ({user_id:User_id, mode:'get_avatar'}),
            success: function(ava) {
                jQuery('#user_avatar'+User_id+'').html('');
                jQuery('#user_avatar'+User_id+'').append(ava);
                markersOptions[id].avatar = addslashes(ava);
                return false;
            }
        });
    }else{
        return true;
    }
}

相关内容

最新更新