Ho seguito this tutorial per creare una mappa Google personalizzata. Ho incluso alcuni altri elementi come collegarlo a Wordpress e raggruppare i marcatori.Modifica dei dati nella finestra informativa con gli indicatori di Google Maps
Funziona tutto alla grande, a parte le informazioni nelle finestre informative su ciascun marcatore. Non riesco proprio a cambiare le informazioni all'interno di ognuna. Ho pensato che cambiando le seguenti righe sarebbe cambiare, ma nulla lo colpisce:
var html = "<b>" + name + "</b> <br/>" + address;
Dove posso mettere nei miei dati personalizzati nella finestra? Inoltre, se potessi modellare la finestra, sarebbe ancora meglio.
Sembra che la clusterer è il problema, soprattutto questa sezione, come posso prendere il contenuto HTML e posizionarlo nella finestra di informazioni?
function load() {
var cluster = [];
var map = new google.maps.Map(document.getElementById("map"), {
center: new google.maps.LatLng(52.375599, -3.471680),
zoom: 8,
mapTypeId: 'roadmap'
});
var infowindow = new google.maps.InfoWindow();
var min = .999999;
var max = 1.000002;
// Change this depending on the name of your PHP file
downloadUrl("<?php bloginfo('stylesheet_directory'); ?>/phpsqlajax_genxml.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 type = markers[i].getAttribute("type");
var offsetLat = markers[i].getAttribute("lat") * (Math.random() * (max - min) + min);
var offsetLng = markers[i].getAttribute("lng") * (Math.random() * (max - min) + min);
var point = new google.maps.LatLng(offsetLat, offsetLng);
var html = "<b>" + name + "</b> <br/>" + address;
var icon = customIcons[type] || {};
var marker = new google.maps.Marker({
map: map,
position: point,
icon: icon.icon,
shadow: icon.shadow
});
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
// infowindow.setContent(markers[i].getAttribute("name"));
// infowindow.open(map, marker, html);
infowindow.setContent(html); infowindow.open(map, marker);
}
})(marker, i));
cluster.push(marker);
}
var mc = new MarkerClusterer(map,cluster);
});
}
particolare questo, non è mettere il contenuto html attraverso la clusterer ... almeno questo è effettivamente cambiando i dati nella finestra, basta uscita il contenuto html senza rompere la clusterer:
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
infowindow.setContent(markers[i].getAttribute("name"));
infowindow.open(map, marker, html);
}
})(marker, i));
cluster.push(marker);
Il più vicino che ho finora è questo ma mostra le stesse informazioni per ogni marcatore. Sta mostrando il contenuto html:
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
// infowindow.setContent(markers[i].getAttribute("name"));
// infowindow.open(map, marker, html);
infowindow.setContent(html); infowindow.open(map, marker);
}
})(marker, i));
cluster.push(marker);
Puoi fornire il codice con l'uso di HTML in esso? – Ankit
@Ankit Ho appena aggiunto un aggiornamento, penso di aver trovato dove si trova l'errore, ho solo bisogno di trovare una soluzione! Puoi vedere il codice sorgente per vedere il codice completo sul link fornito, è un po 'troppo da incollare qui. – Rob
Per cominciare abbiamo bisogno di creare l'oggetto infowindow? o lo hai omesso. var infowindow = new google.maps.InfoWindow ({content: html}). E in addListener, infowindow.open (mappa, marker); Rimuovi infowindow.setContent da addListener [link] (https://developers.google.com/maps/documentation/javascript/overlays) – Ankit