Google Maps API V3: seltsame Probleme bei der Anzeige der Benutzeroberfläche (mit Screenshot)


80

Jeder, der Ideen dazu hat, was diesen seltsamen Fehler mit den Komponenten der Google Maps-Benutzeroberfläche verursacht, ist sehr dankbar, von Ihnen zu hören!

Geben Sie hier die Bildbeschreibung ein

Die Karte wird erstellt mit:

        var options = {
        zoom: <?php echo $this->zoom ?>,
        center: new google.maps.LatLng(<?php echo $this->centre_lat ?>, <?php echo $this->centre_lon ?>),
            mapTypeControl: false,
            mapTypeId: google.maps.MapTypeId.ROADMAP                
        }; 

        var map = new google.maps.Map(document.getElementById('map_canvas'), options);

und der Fehler ist der gleiche, auch ohne Marker.


Es wäre hilfreich, wenn Sie einen Ausschnitt hinzufügen würden, wie Sie diese Komponente deklarieren
— slawekwin

@slawekwin - aktualisierte Frage.
— Haroldo

Antworten:


182

Wir sind auf das gleiche Problem gestoßen. Der CSS-Designer verwendete diesen Stil:

style.css

img {max-width: 100%; }

Anstatt die Zoomsteuerung zu deaktivieren, haben wir das Problem behoben, indem wir den img-Stil für map_canvas-Elemente wie folgt überschrieben haben:

style.css:

#map_canvas img { max-width: none; }

Die Zoomsteuerung wird jetzt korrekt angezeigt.

Das Einstellen von "img max-width: 100%" ist eine Technik, die beim Responsive / Fluid-Website-Design verwendet wird, damit die Größe von Bildern proportional geändert wird, wenn der Browser die Größe ändert. Anscheinend haben einige CSS-Rastersysteme begonnen, diesen Stil standardmäßig festzulegen. Weitere Informationen zu flüssigen Bildern finden Sie hier: http://www.alistapart.com/articles/fluid-images/ Nicht sicher, warum dies mit der Google-Karte in Konflikt steht ...


9
Das hat mich auch betroffen. Google Maps API v3 verwendet ein großformatiges transparentes PNG-Sprite-Bild ( http://maps.gstatic.com/mapfiles/iw3.png), das in einem übergeordneten Container mit platziert wird overflow: hidden. Wenn Sie die Breite des Bildes begrenzen, wird das Bild komprimiert.
— Jwal

1
Dieser hat mich verblüfft. Vielen Dank für die Veröffentlichung dieser Lösung!
— stephen.hanson

Sie, Sir, rocken! Habe niemals drüber nachgedacht.
— lu1s

33

Mit der neuesten Version von Google Maps API benötigen Sie Folgendes:

<style>
  .gm-style img { max-width: none; }
  .gm-style label { width: auto; display: inline; }
</style>

Dies entspricht der akzeptierten Lösung, jedoch mit einem anderen Selektor und einem zusätzlichen Reset Ihres eigenen Etikettenstils.
— lmeurs

Dieser hilft tatsächlich
— Nathanphan

8

Sieht nach einem Problem mit der Zoomsteuerung aus. Versuchen Sie es hinzuzufügenzoomControl:false , Ihre Optionen zu erweitern.

Tatsächlich scheint der normale Zoomregler links von der Seite positioniert zu sein (verwenden Sie Firebug> Inspect Element). Könnte ein CSS-Konflikt sein?


12
Ok, ich habe es gefunden. Es ist verursacht von meinemimg {max-width: 100%; }
— Haroldo

Ich habe das gleiche Problem und habe nach dem Entfernen des CSS-Img {max-width: 100%;}
— behoben.

2

Nun, ich habe das Problem behoben:

In Ihrem CSS haben Sie Folgendes hinzugefügt:

img {max-width: 100%; height: auto;}

versuche es nicht global zu machen und es sollte dich reparieren :)


1

Das hat bei mir funktioniert:

#map img { max-width: none !important; } (from Patrick's answer)

Das Attribut "! wichtig" stellt sicher, dass alle anderen Stile überschrieben werden. #map ist die ID, die zugewiesen wird, wenn Sie das neue Objekt Gmaps deklarieren:

<script>
    map = new GMaps({
          div: '#map',           <-  your id
          lat:  *******,
          lng:  *******,
          scrollwheel: false,
          panControl: true,
          ....
          ...
</script>

0

Wenn Sie die Dreamweaver-Fluid-Grid-Funktion verwenden, sollte Ihre Standardeinstellung folgendermaßen aussehen:

img, object, embed, video {
    max-width: 100%;
}
/* IE 6 does not support max-width so default to width 100% */
.ie6 img {
    width:100%;
}

Versuche dies:

object, embed, video {
    max-width: 100%;
}
#map_canvas img { max-width: none; }
/* IE 6 does not support max-width so default to width 100% */
.ie6 img {
    width:100%;
}

Ersetzen Sie einfach den Code so wie er ist.


0

Bootstrap (ab Version 2.3.2) spielt mit Bildern auf die gleiche Weise wie in der akzeptierten Antwort.

Tatsächlich vermute ich, dass das auf der Haroldo-Website verwendete Design Bootstrap verwendet.

Ich poste dies nur, weil niemand anderes Bootstrap erwähnt hat und jemand nach einer Bootstrap-spezifischen Lösung sucht.


0

Ich bin auf meiner Square Space-Website auf dieses Problem gestoßen. Ich hatte keinen Zugriff auf das CSS-Stylesheet. Da Sie ein HTML-Dokument einbetten, können Sie das Problem einfach mit Inline-CSS beheben. Ich habe den Stil des Containers geändert, anstatt eine Site-weite Änderung vorzunehmen (was ich nicht tun konnte). Folgendes habe ich getan:

<style>
  html, body, #map-canvas {
    height: 600px;
    width: 100%;
    margin: 0px;
    padding: 0px
  }
  #map-canvas img {max-width: none;}
</style>
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.