Ho un mazzo o marcatori e voglio mostrare solo l'area che li contiene. Ho trovato una lunga lista di domande simili (vedi in fondo per alcuni), ma nessuna delle soluzioni funziona per me. Il LatLngBounds è compilato correttamente, ma quando chiamo fitBounds il risultato sarà il seguente: Invece di: Qualcuno può individuare un errore evidente nel mio codice?fitBounds() mostra l'intera terra (se la mappa viene prima nascosta e quindi visualizzata)
var opt = {
zoom: 8,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map"),opt);
var box = new google.maps.LatLngBounds();
for(var i=0;i<list.length;i++){
var p = new google.maps.LatLng(list[i].lat,list[i].lon);
var marker = new google.maps.Marker({
position: p,
map: map
});
box.extend(p);
}
map.fitBounds(box);
map.panToBounds(box);
Alcuni dei posti che ho letto e provato (elenco non completo):
- Google Maps v3 - Automating Zoom Level?
- Google maps V3 custom marker images and fitBounds()
- Google Maps with fitBounds don't zoom
- fitbounds() in Google maps api V3 does not fit bounds
Modifica: questo accade in realtà se (come faccio nella mia applicazione) la mappa è inizialmente nascosta e mostrata solo più tardi. mi nascondo in questo modo:
$('#map').hide();
e mostrarlo:
$('#map').show(function(){
//this is necessary because otherwise
//the map will show up in the upper left corner
//until a window resize takes place
google.maps.event.trigger(map, 'resize');
});
Qualsiasi indizio sul perché questo accade e come evitare che (a parte l'inizializzazione la mappa quando indicato prima) ?
Nota a margine, se si imposta lo zoom e il centro quando si dichiara l'oggetto della mappa (ad esempio, io non uso fitBounds()
), la mappa verrà visualizzata correttamente, anche dopo un nascondimento/mostra. Non riesco a impostare lo zoom e il centro, perché l'elenco dei punti viene recuperato altrove e non so dove sono in anticipo.
Probabilmente, alcuni dei tuoi elementi di 'lista [i]' sono 'non validi'. Prova a eseguire il debug, e vedi, tutti gli elementi 'list [i]' hanno proprietà 'lat', 'lon', e quelli non sono 'null',' indefinito', 'NaN', ecc. – Engineer
@Engineer ringrazia per il commento, ma gli elementi sono tutti buoni. Come nota a margine, ciò accade con Firefox 13, Chrome 19 e IE 9. – Stephan
Fornire l'elenco su cui si sta iterando. Renderà molto più facile il debug. – puckhead