日記/2009-12-2
Google Visualization APIのMapとTableを用いたプラグイン
FreeStyleWikiの本家のサイトに投稿されている、BugTrack-plugin/215のCardForm プラグインで用いる書式の複数のカードに記されたデータ群を、地図と表に表示するプラグインを作成してみました。
表示には、Google Visualization APIのMapとTableを用いています。
注意点
- 使用できるプラグインは、gvamt2 プラグイン、gvalt プラグインの2種類になりました。
- Google Maps APIキーは不要となりました。
- 例えば「京都府京都市中京区三条通堀川西入ル一筋目角」のような京都の通り名のジオコーディングに対応したgvamt2 プラグイン、
gvamap2 プラグインを使用するためには、ジオどすのAPIキーを登録する必要があります。 - プラグイン内部でユーティリティー関数としてCardForm プラグインのものを使っていますので、必ずこれをインストールしてください。
インストール
- あらかじめCardForm プラグインをインストールしておきます。
- 以下のファイルをダウンロードします。
- gva06.zip(162)
- 京都の通り名に対応したgvamt2 プラグイン、
gvamap2 プラグインを使用するためには、さらに以下の作業が必要です。- ジオどすのAPIキーを登録します(参照)。
- GeodosuID.pmの9行目に記載のある変数「$key」に登録したAPIキーを設定します。
- 以下のモジュールをlib以下にインストールします。
- plugin以下にインストールします。
gvamt2 プラグイン
インストール手順等は「Google Visualization APIのMapとTableを用いたプラグイン」のページを参照のこと。
使い方は、gvamt プラグインとまったく同じ。
通り名で記された京都の住所に対応しています(当然、普通の住所にも対応しています)。
わざわざgvamt プラグインと別のプラグインにしたのは、このプラグインが遅いため。
京都市内の住所を取り扱わない場合には、従来通りgvamt プラグインを使ってください。
一度ジオコーディング(住所から緯度経度への変換)したらその結果を保存しておいて、次回以降のマップ表示の際には保存しておいた座標データを用います。これにより表示の高速化がはかられ、2回目以降の表示ではgvamt プラグインよりも高速です(gvalt プラグイン相当)。
キャッシュファイルが存在しないか、プラグインが記載されているページの更新日時がキャッシュファイルよりも新しくなるか、いずれかの場合にはジオコーディングを行いキャッシュファイルを作成します。それ以外の場合には、キャッシュファイルに保存されている座標データを用い、改めて変換を行うことはありません。
以下は、各々のカードの記載の例(西本願寺のデータが記された「KyotoArt/3」のページのソース)。
*Address: 京都府京都市下京区堀川通花屋町下ル本願寺門前町60 *Name: 西本願寺 {{cardnavi KyotoArtMap}} !!GoogleMap …… 以下略
この様な書式のカードに記された「通り名で記された京都の住所」と「名前」からなるデータ群を、以下のような書式で、ジオどすで普通の住所に変換後、Google Visualization APIを用いて表示します。
{{gvamt2 KyotoArt,500,500,5,hybrid,10}}
「KyotoArt」はデータが記されたカードのベースネーム。
「500」「500」は、マップ領域のサイズ(それぞれ「横の画素数」「縦の画素数」)。省略可能。省略するとそれぞれ「400」「300」になります。
「5」はマップ領域のズームの設定。「0」が最小(地球全体)で「19」が最大。省略可能。省略すると自動的にそれなりの値が設定されます。
「normal」は表示されるマップのタイプ。「normal」で地図、「satellite」で衛生写真、「hybrid」で両者を重ね合わせたもの。省略すると「normal」が指定されます。
「10」は表の行数。指定した行数で表のページングを行います。省略すると全行表示します。
gvalt プラグイン
gvamt プラグインは「住所」と「名前」の組でしたが、Google Visualization APIのドキュメント(こちらのNote)によると、「住所文字列より、緯度と経度のペアの方が、特にデータ量が大きい場合には、表示が早い。データ量が大きい場合には、緯度と経度のペアを使用することを勧める」とのこと。
このため、「緯度」、「経度」、「名前」の組のデータを表示する、gvalt プラグインも作成してみました。
ですが、結局のところ、両方を同じページに表示すると重いので、別ページにしました。
こちらのページをご覧ください。
参考情報
- Google Visualization API
- Visualization: Map
- Visualization: Table
- 本プラグインは上記のページのサンプルコードを丸ごとパクっただけ。ありがとうございます。
- CardForm:カード型データベースのためのプラグイン群
- Google Visualization APIで使うデータソースとしてはGoogle SpreadSheetsなどが想定されていますが、FreeStyleWikiなんで、これを使うことにしました。ありがとうございます。
- 経度・緯度の表し方と変換
- プラグインでは使ってませんが、サンプルデータ作成の際に上記ページの変換式を使用しました。YahooMap プラグインでは(というかYahooでは)日本測地系が、gvamt2 プラグイン、gvalt プラグインでは(というかGoogleでは)世界測地系が、それぞれ用いられているため。ありがとうございます。
- ジオどす
- 京都通り名ジオコーダAPI。ニッチな用途ですが、だからこそ便利。ありがとうございます。
履歴
- 2009/12/05に、gvamap プラグインを追加。ついでに書式を一部修正。
- 2009/12/06に、gvalmap プラグインを追加。
- 2009/12/07に、gvamt2 プラグイン、gvamap2 プラグインを追加。ついでに表のページングに対応。
- 2009/12/09に、gvamt2 プラグインのキャッシュ対応。
- 2013/12/28に、gvamt2 プラグイン、gvalt プラグイン以外のプラグインを削除(Google Visualization APIの仕様変更のためか、動作しなくなってしまったため)。