- ベストアンサー
GoogleMAPの切り替えについて
Javascriptのエラーについて質問させてください。 1つのページで、2種類のGoogleMAPを切り替えたいと思っています。しかし、以下のように記述したところ「"offsetwidth"はnullまたはオブジェクトではありません。」とエラー表示されてしまいます(確認ブラウザ:IE6、FireFOX3、Safari、Googlechorome)。 一体、何がマズイのかさっぱりわからなくなり、困り果てて質問しています。どうかお力をお貸しください。 宜しくお願いします。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="stylesheet" href="style_sheet.css" type="text/css"> <title>マップテスト</title> <script src="http://maps.google.com/maps?file=api&v=2&key=グーグルマップAPIキー" type="text/javascript"></script> <script type="text/javascript"> //<![CDATA[ function load() { if (GBrowserIsCompatible()) { //エリア1マップ用設定開始。 var map = new GMap2(document.getElementById("map")); //コントロール追加表示。右下縮小図とコントロールバー。 map.addControl( new GSmallMapControl() ); map.addControl( new GOverviewMapControl() ); //店舗のマーカー表示 var point1 = new GLatLng(座標,座標); map.setCenter(point1, 10); var point2 = new GLatLng(座標,座標); map.setCenter(point2, 10); var point3 = new GLatLng(座標,座標); map.setCenter(point3, 10); //アイコンのための宣言 var icon = new GIcon(); // アイコン画像のURL icon.image = "./img/hoge.png"; // アイコン画像のサイズ icon.iconSize = new GSize(50, 25); // アイコンの表示場所 con.iconAnchor = new GLatLng(32, 0); // マーカーの表示 map.addOverlay( new GMarker(point1, icon) ); map.addOverlay( new GMarker(point2, icon) ); map.addOverlay( new GMarker(point3, icon) ); //デフォルトの表示 map.setCenter(new GLatLng(座標,座標), 10); } } function load2() { if (GBrowserIsCompatible()) { //エリア2マップ用設定開始。 var map2 = new GMap2(document.getElementById("map")); //コントロール追加表示。右下縮小図とコントロールバー。 map2.addControl( new GSmallMapControl() ); map2.addControl( new GOverviewMapControl() ); //店舗のマーカー表示 var point21 = new GLatLng(座標,座標); map2.setCenter(point21, 10); var point22 = new GLatLng(座標,座標); map2.setCenter(point22, 10); var point23 = new GLatLng(座標,座標); map2.setCenter(point23, 10); var point24 = new GLatLng(座標,座標); map2.setCenter(point24, 10); //アイコンのための宣言 var icon2 = new GIcon(); // アイコン画像のURL icon2.image = "./img/hoge2.png"; // アイコン画像のサイズ(横幅/縦幅) icon2.iconSize = new GSize(50, 25); // アイコンの表示場所 icon2.iconAnchor = new GLatLng(32, 0); // マーカーの表示 map2.addOverlay( new GMarker(point21, icon2) ); map2.addOverlay( new GMarker(point22, icon2) ); map2.addOverlay( new GMarker(point23, icon2) ); map2.addOverlay( new GMarker(point24, icon2) ); //デフォルトの表示 map2.setCenter(new GLatLng(座標,座標); 12); } } //]]> </script> </head> <body onload="load()" onunload="GUnload()"> <a href="#" onclick="load()">エリア1</a>| <a href="#" onclick="load2()">エリア2</a>| <!-- マップ表示用DIV --> <div id="map" style="width:700px;height:350px;"></div> </body> </html>
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
原因はわからないのですが、右下縮小図が影響しているみたいです。 map.addControl( new GSmallMapControl() ); map.addControl( new GOverviewMapControl() ); 上の2行をコメントにするとエラーが出なくなると思います。 対処方法はこれから調べようと思います。
その他の回答 (3)
- askaaska
- ベストアンサー率35% (1455/4149)
実際にやってみたわ。 Googleの提供するJavaScriptが初期化処理を提供しているのね。 だからonloadでは正常に動くんだわ。 その初期化処理をクリック時に呼ぶことができれば・・・
お礼
>>実際にやってみたわ。 ありがとうございます。 >>その初期化処理をクリック時に呼ぶことができれば・・・ とりあえず、今回は map.addControl( new GSmallMapControl() ); map.addControl( new GOverviewMapControl() ); をコメントアウトして応急対処しようと思います。 色々とコメントを頂き、ありがとうございました。 助かりました。感謝です。m(__)m
- askaaska
- ベストアンサー率35% (1455/4149)
sensor=true_or_false がないせいかしら? ちょっと判らないわ。
- askaaska
- ベストアンサー率35% (1455/4149)
「座標」て何よ。 具体的な数値を入れれば動くんじゃない? あと //デフォルトの表示 map2.setCenter(new GLatLng(座標,座標); 12); ここ文法おかしいわ。
お礼
お返事ありがとうございます。m(__)m >>「座標」て何よ。 >>具体的な数値を入れれば動くんじゃない? すみません、何か適当に数値を入れておけばよかったですね。 実際には地図の座標を入れてありますが、 残念ながら切り替える際に、どうしても前述のエラーがでます。 >>あと >>//デフォルトの表示 >>map2.setCenter(new GLatLng(座標,座標); 12); >>ここ文法おかしいわ。 すみません、転載時のミスです。「;」は実際の記述内では正しく「,」になっています。失礼しました。
お礼
>>原因はわからないのですが、右下縮小図が影響しているみたいです。 >>上の2行をコメントにするとエラーが出なくなると思います。 >>対処方法はこれから調べようと思います。 ありがとうございます。m(__)m 大変参考になります。とりあえず、問題の二行をコメントアウトして応急処置をします。 助かりました。