外部データをAjaxで読み込む
ここまでで事前準備が整ったので、今回のキモであるマウスオーバー時の処理を作りましょう。マウスオーバー時の処理は、jQueryでは以下のように記述します。shopmap は先ほどサムネイル画像に設定したクラス名です。
$(".shopmap").mouseover(function(){
マウスオーバー時の処理
})
次に、実際にマウスオーバー時の処理の中身を書いていきます。マウスオーバーしたサムネイル画像には longdesc属性が設定されており、URL, 緯度, 経度の順番にデータが書かれています。そこで、以下のように longdesc属性の内容を読み出し、それぞれのデータに切り分けます。shopdata には配列形式でURL, 緯度, 経度の順番にデータが格納されます。
var shopdata = ($(this).attr("longdesc")).split(",");
最初のデータは、書店の紹介文を記述した外部HTMLファイルのURLです。このHTMLを以下のようにAjax (非同期通信) を使って読み込み、ID名「shopInfo」の位置に表示します。shopdata[0] には書店情報のページURLが入っているので、load() のパラメータに指定するだけで自動的に内容が読み込まれ、表示されます。
$("#shopInfo").load(shopdata[0]);
続いて、Googleマップを書店の所在地を示す座標に移動させます。地図の位置は以下のようにして設定します。
var pos = new GLatLng(parseFloat(shopdata[1]),parseFloat(shopdata[2]));
map.panTo(pos, 15);
単純に座標を移動させるだけなら setCenter() でもいいのですが、panTo() を使った方が見た目にはよいでしょう。 panTo() は、指定した座標が現在表示されている地図の範囲内に存在する場合に、スムーズにスクロールしながら表示を切り替える命令です。
次に、書店の場所をマーカーで示しましょう。マーカーは以下のように書けば表示できます。
map.addOverlay(new GMarker(pos));
ただこれだと、サムネイル画像にマウスを乗せるたびにマーカーがどんどん追加されてしまい、表示速度が低下する原因になります。そこで、すでにマーカーが表示されている場合は新たにマーカーを表示しないように対策します。
対策方法はいくつかありますが、今回は、一度マーカーが表示されたら、 flag属性を imgタグに追加し、flag属性が存在する場合にはマーカーを追加しないようにします。わずか3行で実現できる手軽な方法です。
if($(this).attr("flag")) return; // すでにマーカーがある場合は処理しない
map.addOverlay(new GMarker(pos));
$(this).attr("flag", true);
以上で、マウスオーバー時の処理が完成しました。ここまでに説明したスクリプトは以下のとおりです。
// サムネールオーバー&書店情報表示処理
$(".shopmap").mouseover(function(){
var shopdata = ($(this).attr("longdesc")).split(",");
$("#shopInfo").load(shopdata[0]);
var pos = new GLatLng(parseFloat(shopdata[1]),parseFloat(shopdata[2]));
map.panTo(pos, 15);
if($(this).attr("flag")) return; // すでにマーカーがある場合は処理しない
map.addOverlay(new GMarker(pos));
$(this).attr("flag", true);
});
この連載の記事
- 第26回 普通のtableタグを1行で動く表にするJSライブラリ
- 第24回 英国の映像作家も使うJS製LavaLampメニュー
- 第23回 jQueryでクールなくるくるウィジェットを作ろう
- 第22回 Amazonと楽天のアフィリエイトを効率化するjQuery技
- 第21回 意外性が心地よいJSメニューのWebデザイン
- 第20回 jQueryで作るAmazon流リキッドレイアウト
- 第19回 Yahoo!の流れるパネルをJSライブラリで再現
- 第18回 あのFlashサイトのUIをjQueryで作る
- 第17回 JavaScriptでびゅんびゅんスライド!ページ切換法
- 第16回 jQueryアニメ&エフェクト合わせ技で画像を拡大
- この連載の一覧へ

















![Microsoft Windows7 Home Premium 64bit 日本語 DSP版 + メモリ [DVD-ROM] Microsoft Windows7 Home Premium 64bit 日本語 DSP版 + メモリ [DVD-ROM]](http://ascii.jp/img/amazon_noimg70.gif)




