49

Ho caricato l'API di Google Maps API v3 e stampato Google Map in div. Ma quando imposta la larghezza & altezza al 100% e auto non riesco a vedere la mappa.Imposta larghezza e altezza del contenitore di Google Maps 100%

Ecco uno snippet di codice HTML.

<!-- Maps Container --> 
<div id="map_canvas" style="height:100%;width:100px;margin:0 auto;"></div> 

C'è un modo per risolvere questo problema?

+0

Qual è lo stile dell'elemento che contiene il div # gmap_canvas? – Machiel

+0

'#content {background-color: #fff; border: solido 1px # a6a196; border-radius: 4px; -moz-border-radius: 4px; height: auto; overflow: hidden;} ' – BBKing

risposta

54

è necessario impostare tutti i contenitori padre ad una larghezza di 100%, se si vuole coprire l'intera pagina con esso. È necessario impostare un valore assoluto in larghezza e altezza per il div #content come minimo.

body, html { 
    height: 100%; 
    width: 100%; 
} 

div#content { 
    width: 100%; height: 100%; 
} 
+2

Cosa succede se voglio solo che la mappa appaia in una parte del sito e non al 100%? @Machiel – CodeGuru

+0

@RainbowHat specifica semplicemente la dimensione nel tuo CSS, modifica la larghezza e l'altezza dal contenuto div #. – Machiel

+3

Per essere chiari, ogni elemento genitore dal div del contenuto (nel codice dell'OP è # map-canvas, non #content) ** deve ** avere un set larghezza/altezza specifico, sia esso relativo o esatto. Fallo e questa risposta è corretta. – Will

-3

Se questo div è l'unica cosa sulla vostra pagina, impostare:

body, html { 
    height: 100%; 
    width: 100%; 
} 
+0

http://stackoverflow.com/questions/13926371/google-map-inside-container#comment19198810_13926371 – CodeGuru

0

Gmap scrive posizione stile in linea rispetto al div. Sovrascriverlo con:

google.maps.event.addListener(map, 'tilesloaded', function(){ 
    document.getElementById('maps').style.position = 'static'; 
    document.getElementById('maps').style.background = 'none'; 
}); 

Spero che sia d'aiuto.

34

Impostare il contenitore della mappa in posizione rispetto al relativo. Ecco HTML.

<body> 
    <!-- Map container --> 
    <div id="map_canvas"></div> 
</body> 

E Semplice CSS.

<style> 
html, body, #map_canvas { 
    width: 100%; 
    height: 100%; 
    margin: 0; 
    padding: 0; 
} 
#map_canvas { 
    position: relative; 
} 
</style> 

Testato su tutti i browser. Ecco lo Screenshot.

enter image description here

-3

ho faticato molto per trovare la risposta.

Non hai davvero bisogno di fare nulla con le dimensioni del corpo. Tutto ciò che serve per rimuovere lo stile in linea dal codice mappa:

<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://maps.google.co.uk/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=new+york&amp;aq=&amp;sll=53.546224,-2.106543&amp;sspn=0.02453,0.084543&amp;ie=UTF8&amp;hq=&amp;hnear=New+York,+United+States&amp;t=m&amp;z=10&amp;iwloc=A&amp;output=embed"></iframe><br /><small><a href="https://maps.google.co.uk/maps?f=q&amp;source=embed&amp;hl=en&amp;geocode=&amp;q=new+york&amp;aq=&amp;sll=53.546224,-2.106543&amp;sspn=0.02453,0.084543&amp;ie=UTF8&amp;hq=&amp;hnear=New+York,+United+States&amp;t=m&amp;z=10&amp;iwloc=A" style="color:#0000FF;text-align:left">View Larger Map</a></small> 

rimuovere tutto lo stile in linea e aggiungere classe o ID e poi lo stile è il modo in cui ti piace.

-7

Ho appena aggiunto lo stile in linea.
<div id="map_canvas" style="width:750px;height:484px;"></div>
E ha funzionato per me.

30

Pochissime persone si rendono conto della potenza del posizionamento css. Per impostare la mappa di occupare l'altezza al 100% del suo contenitore padre facciamo seguire:

#map_canvas_container {position: relative;}

#map_canvas {position: absolute; top: 0; right: 0; bottom: 0; left: 0;}

Se avete non elementi assolutamente posizionato all'interno #map_canvas_container Saranno impostare l'altezza di esso e la mappa prenderà l'esatto spazio disponibile.

+0

Tecnica molto interessante. Sono stato un web dev per un po 'e non ero a conoscenza di questo. –

+0

Peccato che la persona che ha downvoted questa domanda non si sia mai preoccupata di dire "perché?" ... Funziona alla grande per me – Chris

-5

Questo ha funzionato per me.

map_canvas {posizione: assoluta; inizio: 0; a destra: 0; fondo: 0; a sinistra: 0;}

0

È possibile impostare l'altezza a -webkit-fill-disponibili

<!-- Maps Container --> 
<div id="map_canvas" style="height:-webkit-fill-available;width:100px;"></div> 
0

questo lavoro per me.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
<style type="text/css"> 

#cont{ 
    position: relative; 
    width: 300px; 
    height: 300px; 
} 
#map_canvas{ 
    overflow: hidden; 
    position: absolute; 
    top: 0; 
    right: 0; 
    bottom: 0; 
    left: 0; 
} 
</style> 
<script type="text/javascript" src="http://maps.google.com/maps/api/js?key=APIKEY"></script> 
<script type="text/javascript"> 
function initialize() { 
    console.log("Initializing..."); 
    var latlng = new google.maps.LatLng(LAT, LNG); 
    var myOptions = { 
     zoom: 10, 
     center: latlng, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    var map = new google.maps.Map(document.getElementById("map_canvas"), 
     myOptions); 
} 
</script> 
</head> 

<body onload="initialize()"> 
<div id="cont"> 
<div id="map_canvas" style="width: 100%; height: 100%;"></div> 
</div> 
</body> 
</html>