• 締切済み

2つのGoogleMapsを1ページに表示する。

こんばんは。いつもお世話になっております。 2つのGoogleMapsを「map1.html」と「map2.html」にわけて、1つのhtmlにそれぞれiframeで読み込んでいるのですが、 IE6でのみ上手く動いたり動かなかったりします。 <head>内に以下のコードを記述しています。 ━ ソースコード ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ <script src="http://maps.google.com/maps?file=api&v=2&key=GoogleMapsのキー" type="text/javascript" charset="utf-8"></script> <script type="text/javascript"> //<![CDATA[ var map; var markers = new Array(1); function onLoad() { map = new GMap(document.getElementById("gmaps")); map.setCenter(new GLatLng(緯度,経度),16); map.addControl(new GLargeMapControl()); map.addControl(new GMapTypeControl()); map.setMapType(G_NORMAL_MAP); var marker = null; var n_markers = 0; var markeropts = new Object(); marker = new GMarker(new GLatLng(緯度,経度),markeropts); markers[n_markers] = marker; n_markers++; map.addOverlay(marker); map.setCenter(new GLatLng(緯度,経度),16); map.openInfoWindowHtml(map.getCenter(), "<strong>所在地</strong><br />〒000-0000<br />住所<br />電話番号:000-0000-0000"); } //]]> </script> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 上記のコードのうち問題のコードは 「map = new GMap(document.getElementById("gmaps"));」の部分で、 「GMapは宣言されていません」というエラーがIE6で出たり出なかったりします。 エラーが出た場合はマップは表示されません。 2つのファイルで同じソースコードを使用していることがまずいのか、 根本的に書き方がおかしいのか、知識が乏しいためにわからない状況です。 もしご存知の方いらっしゃいましたら、教えていただきたいです。 よろしくお願いいたします。

みんなの回答

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.2

<捕捉(参考)> 異なる<iframe>にある、mapコンテナーの参照は、 ------ map1 = new GMap2(parent.iframe1.document.getElementById("map1"), { size: new GSize(640, 480) }); map2 = new GMap2(parent.iframe2.document.getElementById("map1"), { size: new GSize(640, 480) }); ----- <iframe src="./frame_map1.htm" name="iframe1" width="640" height="480"></iframe> <br /> <iframe src="./frame_map2.htm" name="iframe2" width="640" height="480"></iframe> frame_map1.htm、frame_map2.htmの中身(両方とも) <html> <body> <div id="map1"></div> </body> </html> で、両方のiframe内の地図とも、Firefoxではうまくいくのですが、 IEでは、両方の地図の表示と操作はうまくいきますが、 マーカーの追加等の操作は出来ませんでした。残念! (以上)

ba-demi
質問者

お礼

回答ありがとうございます! そうなのです。アドバイスをいただいていろいろ試してはいますが どうしてもIE6だと表示されたりされなかったり。 あるマシンはまったくエラーがでなくても、あるマシンはエラーばかりだったりです。 IE6のサポートが不安定とかそういうことなのでしょうか・・・ もう少しの間、模索してみます。

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.1

通常mapオブジェクトは一つのコンテナーに対し一つづつ、 個別に作るのが標準のはずです。 2つマップ表示があるなら、 <div id="gmaps1"></div> <div id="gmaps2"></div> map1 = new GMap(document.getElementById("gmaps1")); map2 = new GMap(document.getElementById("gmaps2")); としてmapクラスをインスタンスし、 map1.setCenter(new GLatLng(緯度,経度),16); map1.addOverlay(marker); map2.setCenter(new GLatLng(緯度,経度),16); map2.addOverlay(marker); の様に個別に操作するのが基本のはず。 また、マップコンテナーが、子Windowや、子フレームにある時、あるいは マップコンテナーをスタイルシートで隠したりしていると、親から Javascriptで操作するとき、ブラウザーによっては、うまく動作しない 機能があるみたい(原因は多種多様)です。

関連するQ&A