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>
お礼
ご回答、大変有難うございます。以下の設定で変更マーカーにidが表示されました。私も最初の質問でのCSSの設定で試みていたのですが、マーカーがでなくて(透過状態?)idだけ表示される結果となっていました,CSSにbackground-repeat: no-repeat;を加え無ければならないとはつゆ知らず。無知の極みです。 .my-custom-marker{ background: url('images/my-icon.png'); background-repeat: no-repeat; line-height:30px; text-align:center; } </style> </head> <body> <script> //マーカーに表示したい対象の緯度経度とポップアップする名称を設定 var markerList = [ { pos: [35.021374099999996,135.75594859999998],name:"京都府庁<br/>京都市上京区薮之内町",id:"26"}, { pos: [33.8416231,132.765729],name:"愛媛県庁<br/>松山市一番町4-4-2",id:"38"}, { pos: [51.5033635,-0.12762479999999998],name:"ダウニング街10番地<br/>10 Downing St, Westminster, London SW1A 2AA イギリス",id:"61"}, ]; function init() { var map = L.map('map'); L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors' }).addTo(map); //マーカー全体が入るボックスを作る var bound = L.latLngBounds(markerList[0].pos, markerList[0].pos); //markerListの設定でマーカーを追加 for (var num in markerList) { var mk = markerList[num]; var popup = L.popup().setContent(mk.name); L.marker( mk.pos, { icon: L.divIcon({ className: 'my-custom-marker', iconSize: [25, 44], // アイコンサイズ iconAnchor: [10, 43], popupAnchor: [3, -45], html: mk.id }), title: mk.pos } ).bindPopup(popup).addTo(map); //マーカー全体が入るボックスを広げる bound.extend(mk.pos); } //マーカー全体が入るように地図範囲を設定する map.fitBounds(bound); } </script> 長々とお付き合いしていただき大変お世話になりました。