この人頭いいなと思ったエピソード

こんばんは。いつもお世話になっております。

2つのGoogleMapsを「map1.html」と「map2.html」にわけて、1つのhtmlにそれぞれiframeで読み込んでいるのですが、
IE6でのみ上手く動いたり動かなかったりします。

<head>内に以下のコードを記述しています。

━ ソースコード ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

<script src="http://maps.google.com/maps?file=api&v=2&key=Goo …のキー" 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つのファイルで同じソースコードを使用していることがまずいのか、
根本的に書き方がおかしいのか、知識が乏しいためにわからない状況です。
もしご存知の方いらっしゃいましたら、教えていただきたいです。
よろしくお願いいたします。

A 回答 (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では、両方の地図の表示と操作はうまくいきますが、
マーカーの追加等の操作は出来ませんでした。残念!
(以上)
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/12/19 08:48

通常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で操作するとき、ブラウザーによっては、うまく動作しない
機能があるみたい(原因は多種多様)です。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報