我试图让自定义信息窗口 float 在标记上方,但我注意到任何时候只能打开一个标记。有解决办法吗?
这是我目前生成的代码:
downloadUrl("AllActivityxml.php", function(data) {
var xml = data.responseXML;
var markers = xml.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
var name = markers[i].getAttribute("id");
var address = markers[i].getAttribute("id");
var type = markers[i].getAttribute("venue_type");
var point = new google.maps.LatLng(
parseFloat(markers[i].getAttribute("lat")),
parseFloat(markers[i].getAttribute("lng"))
);
var infowindow = new google.maps.InfoWindow();
var html = "<b>" + point + "</b>hello <br/>" + type;
var icon = customIcons[type] || {};
var marker = new google.maps.Marker({
map: map,
position: point,
icon: icon.icon,
shadow: icon.shadow,
zIndex: Math.round(latlng.lat()*-100000)<<5
});
markersArray.push(marker);
bindInfoWindow(marker, map, infoWindow, html);
google.maps.event.addListener(marker, 'click', function() {
infowindow.setContent(html);
infowindow.open(map,marker);
});
}
});
当你检查this map时,请注意,我无法同时打开 2 个以上的信息窗口。这是为什么?
最佳答案
Google Maps API v3 没有隐式限制,一次只能使用一个 InfowWindow。您需要编写代码来做到这一点。如果您想要每个标记都有一个信息窗口,请创建一个。
类似的东西(未测试):
function createMarker(latlng, html) {
var contentString = html;
var infowindow = new google.maps.InfoWindow();
var marker = new google.maps.Marker({
position: latlng,
map: map,
zIndex: Math.round(latlng.lat()*-100000)<<5
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.setContent(contentString);
infowindow.open(map,marker);
});
}
关于google-maps - 显示所有打开的信息窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13824077/