2013-08-26 2 views
57

J'essaie d'obtenir google maps réactif et redimensionner tout en gardant son centre lorsque Windows redimensionne. Je lis d'autres questions en ce qui concerne la pile tels que:Google maps responsive redimensionner

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

de la deuxième pile question I got a link which helps me with part of the code mais je n'ai toujours pas de chance. Voici le code que je me sers, quand je redimensionnez la fenêtre, les cartes ne redimensionne pas du tout

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

Votre question a répondu à la mienne! Merci! –

+0

@ GuillermoGutiérrez lequel? – nilon

+0

@nilon Je ne l'avais pas publié, mais il s'agissait de définir le centre d'une carte dans Google Maps en utilisant l'API Javascript. –

Répondre

100

Déplacez votre variable carte en une portée où l'écouteur d'événement peut l'utiliser. Vous créez la carte dans votre fonction initialize() et rien d'autre ne peut l'utiliser lorsqu'elle est créée de cette façon.

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

Brillant, cela a juste fonctionné parfaitement, y a-t-il une manière que nous ajoutons une modification au zoom aussi quand nous redimensionnons la fenêtre? –

+1

Oui, vous pouvez appeler map.setZoom (4); ou quel que soit le niveau de zoom dont vous avez besoin juste après avoir appelé map.setCenter(). – rsnickell

+0

oui juste essayé et c'est bien, mais qu'en est-il obtenir -1 ou +1, je veux dire, dynamiquement ajouter ou supprimer le zoom? –

Questions connexes