2016-03-02 13 views
14

私は埋め込んでいるGoogleマップに問題があります。マップが表示されず、ウィンドウのサイズを変更したときにのみ表示される理由を理解できません。stackoverflowのさまざまなソリューションを調べましたが、私のために。ここでGoogleマップの画面サイズ変更後に表示されますか?

は私のjsのコードは次のとおりです。

<script> 
function initMap() { 
     map = new google.maps.Map(document.getElementById('map'), { 
      center: {lat: 31.554606, lng: 74.357158}, 
      zoom: 14 
     }); 
google.maps.event.addListenerOnce(map, 'idle', function() { 
       google.maps.event.trigger(map, 'resize'); 
      }); 
     } 
</script> 

私のdiv

<div id="map"></div> 

私はアプリケーションをロードするとき、それは enter image description here

のように表示され、再サイズブラウザウィンドウの後に、それは次のように完全に表示されますこの enter image description here

この問題を解決する方法を教えてください。

+0

http://stackoverflow.com/questions/12133318/google-maps-ap-works-with-browser-inspect-element –

+0

https: /code.google.com/p/gmaps-api-issues/issues/detail?id=1448 –

+0

$( '#map')。オン( '表示'、機能(){ \t google.maps.event.trigger (マップ、 'サイズ変更'); \t}); \t $( "#マップ")負荷(関数(){ \t \tはconsole.log( "負荷hugya"); \t \t google.maps.event.addListenerOnce(マップ、 'アイドル'、関数(){ \t \t google.maps.event.trigger(マップ、 'リサイズ'); \t \t}); \t})。私は両方の方法で試してみましたが、doesn/tは働いていました – Ahmad

答えて

8

「div id = map」が表示されたらgoogle.maps.event.trigger(map、 'resize')を呼び出します。 How do I resize a Google Map with JavaScript after it has loaded?

+0

$( '#map')。on( '表示'、関数(){ \t google.maps.event.trigger \t $( "#マップ")負荷(関数(){ \t \tはconsole.log( "負荷hugya"); \t \t google.maps.event.addListenerOnce(マップ、 'アイドル'、関数(){ \t \t google.maps.event.trigger(マップ、 'リサイズ'); \t \t}); \t})。私は両方の方法で試してみましたが、それはうまくいきませんでした – Ahmad

+0

私が間違っていれば親切に私に適切なコードを提供してください。 – Ahmad

+0

divが表示される(display:ブロック)かgoogle.maps.eventの後にinitMapを呼び出さなければなりません。あなたのdivの後にトリガー(地図、 'サイズ変更')visilbleされます –

4

eventlistenerがresizeに設定されている場合、onloadに設定する必要があります。

+0

あなたはそれがonloadに設定されるべきですか? (マップ、 'サイズ変更'); \t}); – Ahmad

4

何も私のために働いていません。私はブートストラップのモデルボックスを使って地図をロードしていました。私は何時間も何もしなかった。マップをロードするたびに、灰色のボックスが表示されますが、ブラウザのサイズを変更するとマップが表示されます。ウィンドウのサイズを変更する必要があるようです。だから私はinitmap2()と呼ばれる関数にすべてのマップ機能を置き、その中に新鮮な地図を表示しました。そして私は、すぐにモーダルボックスが開くだろうと

setTimeout(initMap2, 200); 

を使用クリックすると、それはマップを表示するであろう、と私は働く意志100 millisecondsを試してみましたが、私はそれはので、私は念のために500msを保持200+ millisecondsで動作しますね。

私はこれが

+0

ええ、私はこれを使用しています、あまりにも。少なくとも何よりも良い! – nights

2

を役に立てば幸い私は、これは作業後にのみ二つのものを組み合わせることが見つかりました:のsetTimeoutとGoogleはサイズを変更。

そうは、initMapの終わりに、私が設定:

google.maps.event.addListener(map, "idle", function(){ 
    google.maps.event.trigger(map, 'resize'); 
}); 

そして、このようなinitMapためのsetTimeoutを作成します。

$(document).ready(function(){ 
    setTimeout(initMap, 1000); 
}); 

- を編集

答えるために@ LucaC .:私のinitMapは別のjsです。私はページにリンクしています。上記の解決策はこのjs(setTimeoutのみ)で定義されています。

しかし、しばらくすると、モバイルデバイスでこの問題が引き続き発生していることに気付きました。周りの作業

:initMapのためのsetTimeoutを維持し、ページ上で私はマップをロードするには、私はそう

$(window).load(function(){ 
setTimeout(function(){ 
    google.maps.event.trigger(map, "resize"); 
}, 250); 
}); 

を設定している:I)マップを壊す何かを遅らせます。 ii)すべてのページの最後に、ページの読み込み後にマップのサイズを変更してください:)

+0

どこにsetTimeoutを入れましたか? –

+0

私は私の答えを編集:) –

関連する問題