2013-10-14 167 views
1

我有一個簡單的谷歌地圖例如 JS文件:谷歌地圖V3信息窗口addDomListener爲HTML按鈕

/*Standard Setup Google Map*/ 
    var latlng = new google.maps.LatLng(-25.363882,131.044922); 
    var myOptions = { 
     zoom: 15, 
     center: latlng, 
     panControl: false, 
     mapTypeControl: true, 
     scaleControl: true, 
     mapTypeControlOptions: { 
       style: google.maps.MapTypeControlStyle.DROPDOWN_MENU 
     }, 
     zoomControl: true, 
     zoomControlOptions: { 
       style: google.maps.ZoomControlStyle.SMALL 
     }, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 

    // add Map 
    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 

    // add Marker 
    var marker1 = new google.maps.Marker({ 
     map: map, 
     position: new google.maps.LatLng(-25.363882,131.044922) 
    }); 

    // add Info Window 
    var infoWindow = new google.maps.InfoWindow(); 

現在我想打開信息框時,我就在我的HTML模板點擊一個按鈕:

HTML文件:

<body onload="initialize()"> 
... 
<div id="map_canvas"></div> 
... 
<button id="test">Click</button> 
... 
</body> 

這些行添加到我的JS文件:

var onMarkerHTMLClick = function() { 

     var marker = this; 
     var latLng = marker.getPosition(); 
     var content = '<div style="text-align: center; font-size:14px;"><center><b>Company GmbH</b></center><div>Broadway Str.5</div><div>45132 Canvas</div></div>'; 

     map.panTo(marker.getPosition()); 
     map.setZoom(15); 

     infoWindow.setContent(content); 

     infoWindow.open(map, marker); 
    }; 

    google.maps.event.addListener(map, 'click', function() { 
     infoWindow.close(); 
    }); 

    google.maps.event.addDomListener(document.getElementById("test"),'click', onMarkerHTMLClick); 

錯誤:marker.getPosition不是函數 爲什麼這不起作用?如果我在標記本身的點擊功能上做同樣的操作,窗口打開時沒有問題。

+0

按鈕不是標記? –

回答

1

您需要觸發打開infoWindow的事件。可能最簡單的做法是將標記存儲在全局數組中,或者如果沒有多個標記,可以通過ID選擇它們。

var myButton = document.getElementById('THE_ID'); 
google.maps.event.addDomListener(myButton, 'click', openInfoWindow); 

的openInfoWindow擺明回調函數,你可以觸發事件。

+1

啊確定這應該工作,我必須設置var marker = marker1;而不是var marker = this; – Jim