因此,我试图找出一种方法来更改Google Maps V3标记的HTML,这些标记在从数据库中提取后但在被推送到数组之前。
当调用getFishing()时,我想运行convertRate(rate),这样如果rate变量等于2或更多,它会显示一个在Markers自身的HTML内的图片。我已经尝试将它放在bindInfoWindow4()中,并且我在getFishing()函数中尝试了几个地方但没有成功。有没有人这样做过?将标记推到fishArray之后是否可能?
function getFishing() {
fishingUrl("XML_Fishing.php", function (data) {
var xml = data.responseXML;
var markers = xml.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
var id = markers[i].getAttribute("id");
var title = markers[i].getAttribute("title");
var rate = markers[i].getAttribute("rate");
var Fishhtml = "<img id='1star' src='images/1star.png' style='visibility:hidden'>";
var icon = FishingIcon;
var Fishmark = new google.maps.Marker({
map: map,
position: point,
icon: icon.icon
});
fishArray.push(Fishmark);
bindInfoWindow4(Fishmark, map, Fishinfo, Fishhtml);
}
});
}
function convertRate(rate) {
if (rate >= 2) {
document.getElementById("1star").style.visibility = 'visible';
}
}
function bindInfoWindow4(marker, map, infoWindow, html) {
google.maps.event.addListener(marker, 'click', function () {
infoWindow.setContent(html);
infoWindow.open(map, marker);
});
}
答案 0 :(得分:10)
如果更改单击侦听器以显示保存在标记的成员变量中的HTML,则可以随时更改它。如果InfoWindow已打开,您可能需要关闭它并重新打开它(或更新其内容,但这会变得更复杂)。
类似的东西:
function bindInfoWindow4(marker, map, infoWindow, html) {
marker.myHtmlContent = html;
google.maps.event.addListener(marker, 'click', function() {
infoWindow.setContent(marker.myHtmlContent);
infoWindow.open(map, marker);
});
}
然后通过更改marker.myHtmlContent中的值来更新内容。为了使它可见,像这样:
marker.myHtmlContent = "<img id='1star' src='images/1star.png' style='visibility:visible'>";