使用addDomListener与googlemaps无法正常工作

我通过在php中查询数据库,然后将数据发送到addMarker函数,为googlemap构建了标记。

对于每个标记,有0到未知数量的“违规”。 我将每个标记的违规放入一个数组(称为违规),并将其发送到addMarker函数。

我想做的是为每次违规提供一个链接。 单击该链接时,您会看到该违规的详细信息(表格)。

该表最初是display:none。 但是当你点击链接时,我希望显示屏变为阻止状态,链接消失。

我想用jquery来完成这个任务,但是我在实现它时遇到了麻烦。

我一直在尝试使用addDomListener,但它只是不适合我 – 它打破页面没有明确的错误消息。 谁能告诉我如何正确使用addDomListener,或者我应该使用别的东西?

function addMarker(point, name, violations, map) { var marker=new google.maps.Marker({ position:point, icon:'circle.png' }); marker.setMap(map); var markerhtml = ""; markerhtml += "
"; markerhtml += "
" + name + "
"; vCount = violations.length/6; //6=number of fields per violation; vCount = number of violations if (violations.length > 0) { markerhtml += "

Violation"; if (violations.length > 6) { markerhtml += "s"; //make it 'violationS' if there are more than one violation } markerhtml += "

"; for (var j=0; j<vCount; j++) { vIncidentDate = violations[0+(j*6)]; vFineDate = violations[1+(j*6)]; vFineAmount = violations[2+(j*6)]; vLeadPermit = violations[3+(j*6)]; vViolationDescription = violations[4+(j*6)]; markerhtml += "
" + vViolationDescription + "
"; var thisDesc = document.getElementById("desc"+j); google.maps.event.addDomListener($("#thisDesc")[0], 'click', function(){ $(thisDesc).fadeOut(); $('#tblViolations'+j).fadeIn('slow'); }); vResponse = violations[5+(j*6)]; markerhtml += ""; markerhtml += ""; markerhtml += ""; markerhtml += ""; markerhtml += ""; } markerhtml += "
Incident date:" + vIncidentDate + "
Fine date:" + vFineDate + "
Fine amount:" + vFineAmount; markerhtml += "
Description:" + vViolationDescription + "
Response:" + vResponse + "
"; } google.maps.event.addListener(marker, 'click', function() { currentCenter=map.getCenter(); infowindow.setContent(markerhtml); infowindow.setPosition(point); infowindow.open(map); }); google.maps.event.addListener(infowindow, 'closeclick', function() { map.setCenter(new google.maps.LatLng(41.0342375, -77.3066405)); });

看起来是$(“#thisDesc”)[0]在infowindow中寻找元素的问题。 这将不存在于DOM中,并且可以在infowindow’domready’事件触发之后找到。 将您的JQuery代码放在infowindows’domready’事件上运行的函数中。

 google.maps.event.addListener(infowindow, 'domready', function() { // code here });