このページの本文へ

  • twitterでつぶやく
  • はてなブックマークに登録
  • del.icio.usに登録
  • livedoorクリップに登録
  • Buzzurlに登録
  • StumbleUponに登録
  • Google Bookmarksに登録
  • Facebookでシェア
  • Yahoo!ブックマークに登録
  • お気に入りに登録
  • 本文印刷

29分でできる! あのサイトの“技”を盗め ― 第25回

Googleマップ+jQueryで作るAjaxなデザイン

2009年05月26日 11時55分更新

文● 古籏一浩、ASCII.jp


Googleマップ×自作スクリプトの組み合わせで実現

 はじめに仕様を確認します。今回は、連載の作例として制作してきた架空の書評サイト「東京ブックマニア」に書店紹介のページを作成し、hitotokiのような仕掛けを組み込んでいきます。

作例
「東京ブックマニア」の新コンテンツ「ブックストア」(書店紹介ページ)。地図と書店紹介が連動して動くページに仕立てていきます

 新たに作成する部分(地図とコンテンツを組み合わせたウィジェット)は以下のような配置で、書店のサムネイル画像をマウスオーバーすると、地図(Googleマップ)の中心を移動させ、同時に左上のコンテンツ(書店の紹介文)を書き換えます。

作例
新たに作成するウィジェット。地図+コンテンツ+サムネイルをこのようにレイアウトします

 地図には、お手本サイトと同じく、Googleマップを使用します。Googleマップの使用にあたっては事前にAPIキーの取得が必要です。ここではAPIキーの取得方法の説明は省きますので、以前紹介した記事を参考にしてください(関連記事)。

 Googleマップの位置をマウスオーバーにあわせて操作したり、コンテンツを書き換えたりするスクリプトは、適当なライブラリがないので、jQueryをベースに自作します。jQueryを使えば一見複雑そうな処理も案外と簡単にできるので便利です。


書店情報をどう扱うか?

 それではスクリプトの作成に入りましょう、と言いたいところですが、実際に作り始める前に、複数の書店の緯度経度と表示する書店情報をどのように扱えばよいか、少し考えてみましょう。

 もっとも単純なのは、書店の緯度経度、説明文などを配列に入れておく方法です。ただ、これだと書店が増えたり移転したりした場合に、その都度プログラムを変更しなくてはなりません。紹介文を変更したい場合も同様に手間がかかり、少々面倒です。

 そこで今回は、説明文については外部のHTMLファイルに分割しておき、そのURLと緯度経度をHTMLの属性にまとめて書く方法を採ることにします。これなら、後々修正したいときにもHTMLタグの属性値だけを変えればよいので楽ですし、追加も簡単です。

 具体的には、サムネイル画像を表示するための imgタグに、 longdesc属性を追加します。longdesc属性は「Long Description」の略で、alt属性で説明しきれないような長い補足的な説明を示すものです。今回はこの longdesc属性に、緯度経度と、連動して表示させたい外部HTMLのURLを一緒に書いておきます。たとえば以下の例では、「1.jpg」というサムネイル画像を表示し、マウスオーバー時には地図を「35.647613,139.714239」に動かしたうえで、説明文として「1.html」を表示します。


<img src="images/shop/thumb/1.jpg" class="shopmap" longdesc="1.html,35.647613,139.714239">


 URLと緯度経度は簡単にデータを切り分けられるように、,(カンマ)で区切って書きます。また、スクリプト側でデータを読み出すための目印として、スタイルシートクラス「shopmap」を指定しておきます。この imgタグを、表示させたいコンテンツの数だけ繰り返します。


<img src="images/shop/thumb/1.jpg" class="shopmap" longdesc="1.html,35.647613,139.714239">
<img src="images/shop/thumb/2.jpg" class="shopmap" longdesc="2.html,35.664179,139.693221">
<img src="images/shop/thumb/3.jpg" class="shopmap" longdesc="3.html,35.691417,139.696913">
<img src="images/shop/thumb/4.jpg" class="shopmap" longdesc="4.html,35.665255,139.713869">
<img src="images/shop/thumb/5.jpg" class="shopmap" longdesc="5.html,35.706423,139.651261">


 次に、地図を表示する部分(ID名「gmap」)に以下のスクリプトを書き、Googleマップを埋め込みます。


// マップ処理
var map = new GMap2(document.getElementById("gmap"));
map.setCenter(new GLatLng(35.697177,139.775147), 15);
map.addControl(new GSmallMapControl());


 上のサンプルではデフォルトで表示する緯度経度を指定していますが、後で紹介する方法によって、実際には最初の imgタグで指定している緯度経度に書き換えてしまうため、ここでは適当で構いません。

この連載の記事

ASCII.jp会員サービス 週刊Web Professional登録

Webディレクター江口明日香が行く

みんなが買ってる最新アイテムはコレだ!

VOCALOID3 スターターIA ARIA ON THE PLANETES

VOCALOID3 スターターIA ARIA ON THE PLANETES

ヤマハ

17,745円〜

24人が購入

Google上位表示 64の法則 (WEB PROFESSIONAL)

Google上位表示 64の法則 (WEB PROFESSIONAL)

アスキー・メディアワークス

2,499円〜

71人が購入

標準HTML5タグリファレンス (WEB PROFESSIONAL)

標準HTML5タグリファレンス (WEB PROFESSIONAL)

アスキー・メディアワークス

2,205円〜

60人が購入

Speck MacBook Air 13型 See Thru - Clear SPK-MBA13-SEE-CLR

Speck MacBook Air 13型 See Thru - Clear SPK-MBA13-SEE-CLR

スペックコンピュータ

4,262円〜

23人が購入

jQuery Mobile スマートフォンサイト デザイン入門 (WEB PROFESSIONAL)

jQuery Mobile スマートフォンサイト デザイン入門 (WEB PROFESSIONAL)

アスキー・メディアワークス

2,499円〜

39人が購入

メモリーカード 32GB (PCH-Z321J)

メモリーカード 32GB (PCH-Z321J)

ソニー・コンピュータエンタテインメント

7,772円〜

9人が購入

Windows 7 Home Premium 通常版 Service Pack 1 適用済み

Windows 7 Home Premium 通常版 Service Pack 1 適用済み

マイクロソフト

20,271円〜

4人が購入

iPhone 4S/4 防指紋性・高光沢機能性フィルム PRO GUARD AF for iPhone 4S/4 / PGAF-IPH4

iPhone 4S/4 防指紋性・高光沢機能性フィルム PRO GUARD AF for iPhone 4S/4 / PGAF-IPH4

マイクロソリューション Micro Solution Inc.

59人が購入

Amazon.co.jp