61 votes

La carte Google s'affiche partiellement, la zone grise s'affiche à la place des images du serveur Google.

Parfois, google map s'affiche partiellement avec d'autres zones en grisé. Il y a un problème, si nous lançons Firebug, les images apparaissent dans cette zone grise. Je ne sais pas pourquoi cela se produit. Si quelqu'un a déjà rencontré ce problème et trouvé une solution, merci de partager.

1 votes

Alors, que faites-vous exactement pour provoquer ce comportement ?

0 votes

Il n'est pas constant, il ne se produit qu'à certains moments. J'utilise la version 2 de l'API de Google Maps.

0 votes

Comme suggéré dans ce commentaire En mettant une taille en pixel au conteneur de la carte, cela devrait résoudre le problème. C'est le cas pour moi

82voto

MISE À JOUR 27/02/2020
Il n'est plus nécessaire de déclencher manuellement l'événement de redimensionnement.

Si vous utilisez la v3, essayez

google.maps.event.trigger(map, "resize");

Jetez également un coup d'œil à ici

1 votes

Merci beaucoup pour ça - ça m'a aidé !

0 votes

... et encore. Googlé google maps api grey space et j'ai obtenu cette page. Génial. Dans mon cas, mon objet map a été instancié à l'intérieur d'un autre objet, pas globalement, donc assurez-vous que map se réfère à l'objet correct !

1 votes

Et en 2015 ! Merci beaucoup :)

36voto

Hitman_99 Points 1249

Ce bogue peut se produire si vous redimensionnez l'écran de la carte. DIV . Après le redimensionnement, essayez d'appeler gmap.checkResize() fonction.

14 votes

Dans la V3, checkResize est déprécié. Les solutions pour V3 se trouvent à l'adresse suivante blog.codebusters.pl/en/entry/google-maps-in-hidden-div

1 votes

Yay un plug pour un site

0 votes

Du commentaire : google.maps.event.trigger( <map> , "resize")

7voto

MRodrigues Points 41

Bonjour, si vous utilisez le toggle dans un div avec un conteneur de carte, vous devez appeler resizeMap dans la fonction.

associated with the trigger:
        $(".trigger").click(function(){
        $(".panel").toggle("fast");
        $(this).toggleClass("active");
         resizeMap();
        return false;

puis resizeMap() ; comme ceci

function resizeMap()
{
google.maps.event.trigger(map,'resize');
map.setZoom( map.getZoom() );
}

n'oubliez pas de définir la variable map comme globale ;) salutations

7voto

Milan Points 746

J'ai trouvé une solution simple pour le chargement partiel de google map. Habituellement, cela est causé par le onLoad() est appelé à des moments où le reste de la page (y compris votre élément de carte) n'est pas complètement chargé. Cela entraîne un chargement partiel de la carte. Un moyen simple de contourner ce problème consiste à modifier votre élément onLoad action de la balise body.

L'ancienne méthode :

onload="initialize()"

La nouvelle voie :

onLoad="setTimeout('initialize()', 2000);"

Cela permet d'attendre 2 secondes avant que le Javascript de Google n'accède aux attributs de taille corrects. Veillez également à vider le cache de votre navigateur avant de l'essayer ; il arrive qu'il y reste bloqué :)

Au cas où vous vous poseriez la question, il s'agit de ma partie supérieure en Javascript (exactement comme décrit dans la documentation de Google, mais parce que j'appelle la fonction Latitude et Longitude à partir de variables PHP, d'où les extraits PHP.

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
function initialize() {
    var myOptions = {
        center: new google.maps.LatLng(<?php echo $my_latitude; ?> , <?php echo $my_longitude; ?>),
        zoom: 14,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("map_canvas"),
        myOptions);

    var point = new google.maps.LatLng(<?php echo $my_latitude; ?> , <?php echo $my_longitude; ?>);
    var marker = new google.maps.Marker({ position:point, map:map })    
}
</script>

0 votes

Vous êtes un génie ! Ce devrait être la première réponse.

4voto

Izekid Points 97

Je veux juste ajouter à cette discussion que j'ai eu ce problème avec les bandes grises aussi bien, et ce n'était pas le même problème que j'avais besoin d'utiliser la fonction gmap.Resize mais que c'était dans mon css. Dans mon css, j'avais

img { 
max-width:50% 
}

Ainsi, lorsque je place ceci dans mon fichier css

#map-canvas { 
max-width:none;
}

Le problème a disparu ! J'ai cherché dans tout Google mais je n'ai pas trouvé cette réponse.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X