Ho un'applicazione Maps abbastanza sofisticata che gestisce più marker personalizzati e così via. Ho una funzione chiamata resizeWindow che chiamo in un listener che ogni volta che lo schermo viene cambiato, la mappa si ridisegna calcolando nuovi limiti e forzando un ridimensionamento. Ecco come si presenta:Come posso forzare il ridisegno con l'API di Google Maps API v3.0?
window.onresize = function(event) { fitmap(); };
e la funzione per ridimensionare è:
function fitmap(id) {
var coords = [];
var newlatlng = new google.maps.LatLng(projlat, projlng);
coords.push(newlatlng);
for (var i=0; i<markers[id].length; i++) {
newlatlng = new google.maps.LatLng(markers[id][i].latitude, markers[id][i].longitude);
coords.push(newlatlng);
}
}
var bounds = new google.maps.LatLngBounds();
for (var i = 0, LtLgLen = coords.length; i < LtLgLen; i++) {
bounds.extend (coords[i]);
}
map.fitBounds(bounds);
e questo funziona alla grande quando ho ridimensionare la finestra. Ma ...
Ho un menu che scende sul lato destro della finestra. Io uso jquery.animate per spostare quel menu fuori dallo schermo. Io chiamo la funzione fitmap come un processo step (o solo una volta alla fine) e non ridisegnerà la mappa.
$('#rightSide').animate({ right:"-240px" }, {
duration:1000,
step: function(now,fx) {
fitmap();
}
});
Ho letto e letto su questo e sembra che ci sia una stranezza di Google Maps API v3.0 che ridisegnare non accadrà se non cambia nulla in realtà. In questo caso, la mia finestra disponibile cambia da larghezza dello schermo - menu a schermo intero reale. Ma non avviene alcun ridisegno.
Ho provato google.maps.event.trigger (mappa, 'ridimensiona'); e anche questo non funziona.
Esiste un modo per forzare il ridisegno di Google Maps?
Puoi darci un link? –
C'è una piccola scheda in alto a sinistra nel menu di destra. –
Inoltre, se la finestra del browser è impostata su una dimensione che questa modifica impone un cambio di zoom, allora funziona. È solo quando non è necessario alcun cambio di zoom che non si possa regolare. Ho anche provato a forzare uno zoom in 1 fase e lo zoom indietro, ma ciò non ha risolto il problema. –