2013-08-26 13 views
57

Sto cercando di ottenere le mappe di google reattive e ridimensionate mantenendo il centro quando ridimensionano le finestre. Ho letto altre domande dello stack nei riguardi quali:Ridimensionamento reattivo delle mappe di Google

Responsive Google Map? e Center Google Maps (V3) on browser resize (responsive)

dalla seconda domanda pila I got a link which helps me with part of the code ma non ho ancora nessuna fortuna. Questo è il codice che sto usando, quando ho ridimensionare la finestra, le mappe non ridimensiona affatto

function initialize() { 
     var mapOptions = { 
     center: new google.maps.LatLng(40.5472,12.282715), 
     zoom: 6, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
     }; 
     var map = new google.maps.Map(document.getElementById("map-canvas"), 
       mapOptions); 
    } 
    google.maps.event.addDomListener(window, 'load', initialize); 
    google.maps.event.addDomListener(window, "resize", function() { 
    var center = map.getCenter(); 
    google.maps.event.trigger(map, "resize"); 
    map.setCenter(center); 
    }); 

html

<div id="map-canvas"/> 

css

html { height: 100% } 
body { height: 100%; margin: 0; padding: 0 } 
#map-canvas { height: 100% } 
+5

La tua domanda ha risposto alla mia! Grazie! –

+0

@ GuillermoGutiérrez quale? – nilon

+0

@nilon Non l'avevo pubblicato, ma riguardava come impostare il centro di una mappa in Google Maps utilizzando l'API di Javascript. –

risposta

100

Spostare la variabile mappa in un ambito in cui il listener di eventi può utilizzarlo. Stai creando la mappa all'interno della tua funzione initialize() e nient'altro può usarla quando viene creata in quel modo.

var map; //<-- This is now available to both event listeners and the initialize() function 
function initialize() { 
    var mapOptions = { 
    center: new google.maps.LatLng(40.5472,12.282715), 
    zoom: 6, 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    map = new google.maps.Map(document.getElementById("map-canvas"), 
      mapOptions); 
} 
google.maps.event.addDomListener(window, 'load', initialize); 
google.maps.event.addDomListener(window, "resize", function() { 
var center = map.getCenter(); 
google.maps.event.trigger(map, "resize"); 
map.setCenter(center); 
}); 
+0

Brillante, ha funzionato perfettamente, c'è un modo in cui aggiungiamo una modifica allo zoom anche quando ridimensioniamo le finestre? –

+1

Sì, puoi chiamare map.setZoom (4); o qualsiasi altro livello di zoom necessario subito dopo aver chiamato map.setCenter(). – rsnickell

+0

sì solo provato e va bene, ma per quanto riguarda ottenere -1 o +1, voglio dire, aggiungere o rimuovere dinamicamente lo zoom? –

Problemi correlati