Сегодня я собирал этот код вместе, чтобы отобразить маркеры, которые извлекаются из моего XML-файла.
function load() {
var cluster = [];
var map = new google.maps.Map(document.getElementById("map"), {
center: new google.maps.LatLng(-36.848461, 174.763336),
zoom: 13,
mapTypeId: 'roadmap'
});
var infowindow = new google.maps.InfoWindow();
downloadUrl('functions/toXml.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("name");
var address = markers[i].getAttribute("address");
var price = markers[i].getAttribute("price");
var type = markers[i].getAttribute("type");
var point = new google.maps.LatLng(
parseFloat(markers[i].getAttribute("lat")),
parseFloat(markers[i].getAttribute("lng")));
var html = "<b>" + markers[i].getAttribute("name") + "</b> <br/>" + markers[i].getAttribute("address");
var icon = customIcons[type] || {};
var marker = new google.maps.Marker({
map: map,
position: point,
icon: icon.icon,
shadow: icon.shadow
});
marker.addListener('click', (function(marker, i) {
return function() {
infowindow.setContent(html);
infowindow.open(map, marker);
}
})(marker, i));
cluster.push(marker);
}
var mc = new MarkerClusterer(map,cluster,{imagePath: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m'});
});
}
В основном это работает, однако я думаю, что я где-то облажался в итеративном процессе, так как все мои информационные окна имеют одинаковое (последнее) имя и адрес.
Я переместил несколько вещей, но не могу понять, как это исправить.