Home > 2009年 11月 30 日

11月30日 

javascript

Google Mapで表示位置がおかしくてグレーが表示される時

急に気温が高下するこの季節、椎間板ヘルニアはもとより頸椎ヘルニアも目を覚まし猛威を振るってくれるので2,3日死んでることがあるんですが、今年のは微妙に軽症が続いててシンドイなーと思ってたら、週末に来てくれました。
息してるだけで吐きそうな頭痛w

これはいむら整体院に行くしか!w(日曜日はお休みですよ)

閑話休題。

最初は非表示にしておいて、ボタンを押したときにGoogle Map表示させたい、という時なんかに起き勝ちなんだけど、地図の中心位置がおかしくて、半分がグレーで地図が表示されない、などの症状。

原因は地図を表示させる要素のサイズがまだ確定してない状態でGoogle Mapの処理が走ると、変なサイズで初期化されちゃう、ということらしい。

そんな時は要素のサイズが確定したタイミングで

JAVASCRIPT:
  1. map.checkResize();

案外知らないもので、1ピクセル四方の要素を作ってみたり画面外に要素を置いておいて、とかいろいろ試してみたんですが、結局は上記の1行で済んでしまったというオチなのでありますorz

ちなみに、地図の読み込みが終わったかどうかは

JAVASCRIPT:
  1. var map = new GMap2(document.getElementById('map'));
  2. // その他初期化処理
  3. GEvent.addListener(map, "load", function() { ... });

ではイベントの登録が既に遅い(じゃいつ指定するのよ?と)、ということだそうで(というか使い方が違う?)、地図画像がすべて読み込まれたかどうかを

JAVASCRIPT:
  1. GEvent.addListener(map, "tilesloaded", function() { ... });

で取ることができます。

が一応、"undocumented(ドキュメントに記載されてない)"情報のようなので、将来的な動作が保証されるものではない、ということをご承知おき下さいませ。

Google Map API 小ネタでした。