« Google Mapsをブログに貼ってみる、超微妙にアップグレード、あとGoogle Date Map(笑) | Main | iPodで英語のお勉強(WSHで早聞き&遅聞き) »

Google Mapsでタブ付Info Windowを使うHackの和訳

Google-Maps-APIグループでタブ付Info Windowを使うHackの説明ページを作ってる人がいたので、気まぐれに和訳してみた(わりといい加減)。なお、前のエントリの通り、早速Google Maps->Blogはタブ対応してます(下の説明の通り、イマイチuglyな見た目なんだけど)。
※同じ内容ですが、TEDDY-G隣家の記事の方が見やすいかもしれません。

-----
タブ付Info Window
タブ付Info Windowが使えるようになりました。現状、APIには呼び出し用の関数がなく、loadXML()から呼び出せるように設計されている様子ですが、ちょっとしたHackで使えるようになります。

サンプル

注意:このテクニックはGoogle Maps APIの機能として公式にドキュメント化されたものではありませんので、変更される可能性が高いです。

タブHTMLの設定方法
タブを利用するには、openInfoWindows()で指定するHTMLが次の形式に従っている必要があります。

  1. HTMLは「page」属性を持つ2つの要素で始まらねばなりません。サンプルでは、Divタグを使っていますが、他の要素でも大丈夫です。
    <div page="1"></div><div page="2"></div>
  2. 1で指定した2つの要素は「label」属性を持つ必要があります。label属性内で指定された名前が、タブで表示される文字になります。別々のマーカー上で同じタブ名を持つ必要はありません。
  3. 1で指定した2つの要素には、「class="active"」の形でどちらのタブをアクティブにするか指定することができます。どちらの要素も「class="active"」で明示的に記されていない場合は、最初のタブがアクティブになります。
  4. 上記の2つの要素を服むすべてのHTMLがInfo Windowのコンテンツになります。

タブ付Info WindowとタブなしInfo Windowは同じ地図上で混在させることができます。タブなしにしたいInfo Windowからは上記のコントロールをはずしてください。

タブの切り替え
タブを切り替えるには、openInfoWindowHtml()を再度設定し、呼び出す必要があります。全体の構造は同じでよいのですが、Info Windowのメインパネルを変更し、非アクティブになっていた要素の属性を「class="active"」に切り替える必要があります。

タブクリックハンドラ
タブをユーザーが変更できるようにするには、APIからContext(Google Mapsコントロール用のプロパティのひとつ)を受信する必要があります。まず、Info Window上のContextイベントを把握する関数を作成します。この関数は、次のような形式にて定義した上で、Info WindowのContextに追加します。

update_tabs = function(a,b,c) { ... }
この関数はAPI上で何度か呼ばれますが、我々がチェックする必要があるのは1番目のパラメータが「page」のときのみです。
1番目のパラメータが「page」の場合、2番目のパラメータはクリックされたタブのpage属性の値となっています。よって、この情報を新しいInfo Windowの内容を生成する際に利用すればよいのです。

Contextの設定
タブシステムはmap.infoWindow.infoWindoContractが「iwstate」Contextと「iwnavigate」 Contextに関数が設定されている場合にのみ動作します。「iwstate」には、ユーザーがタブをクリックした際に呼ぶべき関数を設定します。「iwnavigate」にはどの関数を設定すべきかは不明ですが、設定しない限り、infoWindow.showTabs()はうまく動きません。

iw = map.getInfoWindow();
w.addContext("iwstate",update_tabs);
w.addContext("iwnavigate",dummy_function);
map.getInfoWindow()はmap.infoWindowの存在を確認できる便利な側面を持っていますので、map.infoWindowではなくmap.getInfoWindow()を使うのがミソです。

ハマりがちな落とし穴

  1. このテクニックを使う際には、APIのバージョンアップに注意してください。
  2. 2つ以上のタブはうまく動きません。
  3. 画面上に表示されるのはいずれかのタブの内容だけですが、Info WindowのinnerHTMLには常に両方のタブの内容が書き込まれています。ハマらないようにしてください。
  4. map.infoWindowではなく、map.getInfoWindow()を使ってください。
  5. 内容が短い場合、タブ付のマーカーはちょっとイマイチな見た目になります。少なくとも2行以上に渡る内容にしてください。


原文はこちら

|

« Google Mapsをブログに貼ってみる、超微妙にアップグレード、あとGoogle Date Map(笑) | Main | iPodで英語のお勉強(WSHで早聞き&遅聞き) »

「WEBサービス」カテゴリの記事

「インターネット」カテゴリの記事

Comments

Doreen, I doubt it!?! -Sincerest regards, Luz

Posted by: moya insurance | 2010.12.17 at 03:11 AM

Post a comment



(Not displayed with comment.)




TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/20589/6442487

Listed below are links to weblogs that reference Google Mapsでタブ付Info Windowを使うHackの和訳:

» [ニュース]情報ウィンドウにタブが新設 [汎用 Google Maps API スクリプト “ KsGMap ” 開発日記]
Google Maps の情報ウィンドウ(吹き出し)にタブが新設されました。 情報ウィンドウは、その性質上サイズが限られていたのですが、このタブによって多くの情報を収納可能になりました。 サンプル サンプルはニューヨークのベーグル屋をローカル検索したものですが、情報ウィンドウを開くと「住所」と「詳細」が選択できるようになっています。 Google Maps API でも利用できるようですので、KsGMap も近く対応する予定です。 久しぶりにわくわくするバージョンアップです。 参考:G... [Read More]

Tracked on 2005.10.20 at 05:55 AM

» GoogleMaps [青海波 PukiWiki Plus 実験中! (PukiWiki/TrackBack 0.3)]
経度と緯度の確認 http://map.rails2u.com/ 浦安:北緯 35.650182553425296 東経139.9134635925293 ▲ ▼Google Maps 鈴鹿サーキットを走ろう 使い方:浦安の場合 上のURLに入る 下記の文をアドレスに貼り付けて、あとは知らせると「浦安を走ろうになる」 ja... [Read More]

Tracked on 2005.12.15 at 08:39 PM

» Google Maps APIタブ付きInfo Window [BUZZ LIVEYEAR]
 GoogleMapsAPIを使用した地図にフキダシのようにInfoWindow... [Read More]

Tracked on 2006.03.10 at 05:34 AM

» FrontPage [PukiWiki Plus! (PukiWiki/TrackBack 0.4)]
リンク集 新規ページ作成: FrontPage/ IP認証によるアクセス制限のテクニック(2/2) -- 2005-07-17 (日) 01:57:47 mod_access - Apache HTTP サーバ -- 2005-07-17 (日) 01:58:00 Macな生活 - www.mac-life.info - -- 2005-08-08 (月) 01:05:10 Mac...... [Read More]

Tracked on 2009.02.28 at 11:20 AM

« Google Mapsをブログに貼ってみる、超微妙にアップグレード、あとGoogle Date Map(笑) | Main | iPodで英語のお勉強(WSHで早聞き&遅聞き) »