2013-11-26 52 views
0

如何編寫if語句來檢查infowindow是否已打開,如果是,則在單擊它或其他標記時將其關閉。我的代碼在下面!單擊時關閉地圖信息窗口(如果打開)

function add_marker($marker, map) { 

// var 
var latlng = new google.maps.LatLng($marker.attr('data-lat'), $marker.attr('data-lng')); 

// create marker 
var marker = new google.maps.Marker({ 
    position : latlng, 
    map   : map 
}); 

// add to array 
map.markers.push(marker); 

// if marker contains HTML, add it to an infoWindow 
if($marker.html()) 
{ 
    // create info window 
    var infowindow = new google.maps.InfoWindow({ 
     content  : $marker.html() 
    }); 

    // show info window when marker is clicked 
    google.maps.event.addListener(marker, 'click', function() { 

     infowindow.open(map, marker); 

    }); 
} 

} 

回答

0

基於對這個問題的代碼,它會是這樣的,雖然它是未經測試:

google.maps.event.addListener(marker, 'click', function() { 
    var map = infoWindow.getMap(); 
    if (map !== null && typeof map !== "undefined") { 
     infowindow.close(); 
    } else { 
     infowindow.open(map, marker); 
    } 
}); 
+0

給它一個嘗試,但仍然未能最初打開標記,謝謝對於這個建議。 –

+0

@Steven_Harris_ - 這可能是因爲如果(infowindow)...失敗,請編輯答案,然後試試。 – adeneo

+0

我已經添加了我的全部功能,用於將標記添加到地圖中,以幫助解決問題。我試過你的更新答案,但它仍然不是最初打開信息窗口。謝謝您的幫助! –

0
function fun_name() 
{ 
    //create the global instance of infoWindow 
    if(!window.infowindow) 
    { 
    window.infowindow=new google.maps.InfoWindow(); 
    } 
    ------- 
    ------- 
    ------- 

google.maps.event.addListener(marker, 'click', function() { 
    infowindow.close(); 
    infowindow.setContent(box_html); 
    infowindow.open(map,this) 
    }); 

} 
+0

似乎沒有工作,感謝您的建議! –

+0

我可以知道錯誤,你正在得到..... –

+0

它不是點擊打開信息窗口。 –

相關問題