Google Maps API V3:奇妙なUI表示の不具合(スクリーンショット付き)


80

グーグルマップのUIコンポーネントでこの奇妙な不具合を引き起こしている原因について何かアイデアを持っている人は、あなたから聞いて本当に感謝しています!

ここに画像の説明を入力してください

マップは次のもので作成されます。

        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);

グリッチはマーカーがなくても同じです。


このコンポーネントをどのように宣言するかを示すスニペットを追加すると便利です
slawekwin 2011

@ slawekwin-質問を更新しました。
ハロルド

回答:


182

同じ問題が発生しました。cssデザイナーはこのスタイルを使用していました:

style.css

img {max-width: 100%; }

ズームコントロールを無効にする代わりに、次のようにmap_canvas要素のimgスタイルをオーバーライドすることで問題を修正しました。

style.css:

#map_canvas img { max-width: none; }

ズームコントロールが正しく表示されるようになりました。

「imgmax-width:100%」の設定は、ブラウザのサイズが変更されたときに画像のサイズが比例して変更されるように、レスポンシブ/流動的なWebサイトのデザインで採用されている手法です。どうやらいくつかのcssグリッドシステムはデフォルトでこのスタイルの設定を開始しました。流体画像の詳細については、こちらをご覧くださいhttp//www.alistapart.com/articles/fluid-images/ これがGoogleマップと競合する理由がわかりません...


9
これは私にも影響を与えました。Google Maps API v3は、http://maps.gstatic.com/mapfiles/iw3.pngが付いた親コンテナ内に配置された、大規模な透明なpngスプライト画像()を使用しoverflow: hiddenます。したがって、画像の幅を制限すると、画像が圧縮されます。
jwal 2012

1
これは私を困惑させていました。このソリューションを投稿していただき、ありがとうございます。
stephen.hanson 2012

あなた、サー、ロック!それについて考えたことはありません。
lu1s 2014

33

グーグルマップAPIの最新バージョンでは、これが必要です:

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

これは受け入れられているソリューションと同じですが、セレクターが異なり、独自のラベルスタイルが追加でリセットされます。
lmeurs 2013年

これは実際に役立ちます
Nathanphan 2015年

8

ズームコントロールに問題があるようです。zoomControl:falseオプションに追加してみてください。

実際、通常のズームスライダーはページの左側に配置されているようです(Firebug>要素の検査を使用)。CSSの競合である可能性がありますか?


12
わかりました。それは私の原因ですimg {max-width: 100%; }
Haroldo 2011

私は同じ問題に直面し、css img {max-width:100%;}を削除した後に修正しましたありがとう
nbhatti2001 2012年

2

さて私はこれの修正を得ました:

CSSに次のようなものを追加しました:

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

それをグローバルにしないようにしてください、そしてそれはあなたを修正するはずです:)


1

これは私のために働いた:

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

属性「!important」は、他のスタイルを確実にオーバーライドします。#mapは、新しいオブジェクトGmapsを宣言するときに割り当てられるIDです。

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

0

Dreamweaver流体グリッド機能を使用している場合、デフォルトの設定は次のようになります。

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

これを試して:

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%;
}

コードをそのまま置き換えるだけです。


0

ブートストラップ(バージョン2.3.2以降)は、受け入れられた回答と同じ方法で画像を混乱させます。

実際、ハロルドのウェブサイトで使用されているデザインはブートストラップを使用しているのではないかと思います。

Bootstrapについて誰も言及しておらず、誰かがBootstrap固有のソリューションを探している可能性があるため、これを投稿しています。


0

SquareSpaceのWebサイトでこの問題が発生しました。CSSスタイルシートにアクセスできませんでした。HTMLドキュメントを埋め込んでいるので、インラインCSSを使用するだけで問題を解決できます。サイト全体を変更する代わりに、コンテナーのスタイルを変更しました(これはできませんでした)。これが私がしたことです:

<style>
  html, body, #map-canvas {
    height: 600px;
    width: 100%;
    margin: 0px;
    padding: 0px
  }
  #map-canvas img {max-width: none;}
</style>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.