Google Ajax Search API
恥ずかしながら知りませんでした・・・。
Google Ajax Search API
名前の通り Google 検索を行う用の API です。
この中にはマップ検索用の API も含まれています。マップ検索を使うと、結果が JSON 形式で返されて、結果の中には緯度・経度の情報や場所の情報などなどが含まれています。ということは、つまりジオコーディングができてしまいます。 Google Maps API と組み合わせると検索された場所を中央に表示することなどが簡単にできてしまいます。 Google Maps API のジオコーディングは日本が対象外になってしまっているままなので、こちらで代用できます。
使い方はすごく簡単です。
呼び出すまでは Google Maps API と同じで、まずキーを取得します。で、そのキーを含んだ API の URL を script タグで呼び出します。
検索して結果を取得するまでのコードを以下に記載します。画面は場所入力用のテキストボックスと検索ボタンがあります。検索ボタンの押下により、テキストボックスの値で検索されます。
window.onload = function(){ var gs = new GlocalSearch(); //--(1) gs.setSearchCompleteCallback(this, callback, [null]); //--(2) var button = document.getElementById("locationSearchButton"); var text = document.getElementById("locationNameTextBox"); button.onclick = function(){ //--(3) if(typeof text.value == "undefined" || text.value == "") return; gs.execute(text.value); //--(4) } function callback(){ //--(5) console.info(gs.results); //--(6) } }
まず、(1)で GlocalSearch オブジェクトをインスタンス化します。GlocalSearch オブジェクトはその名の通り Google ローカル(マップ)の検索を行うオブジェクトです。次に(2)で検索を行った後に呼ばれるコールバック関数を設定します。2番目の引数がコールバック関数です。(3)はボタンが押下されたときのイベントハンドラーです。イベントハンドラーの中の(4)で検索を実行しています。引数には検索する値を設定しています。(5)は検索を行った後に呼ばれるコールバック関数です。(6)で検索の結果を(Firebugの)コンソールに出力しています。結果は配列の JSON 形式で渡されます。
もし、Google Maps API と組み合わせて使用している場合などで、検索が行われた後に結果の場所を中央に表示したい場合などは、
var map = new GMap2(document.getElementById("map")); var gs = new GlocalSearch(); gs.setCenterPoint(map);
としておくと自動で中央に地図が移動するようです。(未検証)
追記 2006/10/30
上記は全く嘘でした。 GlocalSearch::setCenterPoint は検索するときの基準の位置でした。例えば、大阪の位置に中心をあわせておいて、「センタービル」などと検索した場合、梅田センタービルがトップの結果として取得されます。
また、 GSmapSearchControl なんてのもあるようで、これは検索用のテキストボックスやボタン、表示用の GMap などをくっつけたコントロールのようです。単純に検索して中央に表示したい場合などは便利そうです。