2013-10-14 81 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