Yahooのローカルサーチを使うと、
サイトの機能を充実させることができます。
ちょっとやってみましょう。
当然のことですが、
APIなのでこちらからキーワードを投げなければ、
何も返ってくることはありません。
Yahooのローカルサーチは、その投げかけて返ってくる情報が結構豊富です。
まず利用するに当たって、アプリケーションIDを登録(無料)する必要があります。
簡単ですコチラからどうぞ。
アプリケーションIDを取得できましたらさっそく使ってみましょう。
使い方はリクエストURLを作ってそこにジャンプすればいいだけです。
ではリクエストURLの作り方です。
まず基本となるリクエストURLはもう決まっていますので、それを書きます。
http://map.yahooapis.jp/LocalSearchService/V1/LocalSearch
あとはこの後ろにリクエストパラメータを好みに応じてくっつけるだけ。
リクエストパラメータの種類はコチラで見てください。
上記のコチラと同じ遷移先です。検索したものによってパラメータは自由につけて頂いて結構ですが、
ただ注意して頂きたい点もあります。
それは必須項目です。
当然アプリケーションIDは必須です。
先ほどのリクエストURLに”?”を入れてくっつけましょう。
?appid=[ココに入力]
くっつけたら次の必須項目です。
次の必須項目は、ちょっと変則的です。
p(検索キーワード)か、lat(緯度)・lon(経度)・dist(距離)のどちらかを必須とします。
駅とか施設をフリーワードで探したいときは、「p」。
GPSとかで取得して緯度経度が分かってて、
それをもとに検索したいなら、後者を選べばいいと思います。
「p」を選択する場合の注意は、挿入する前にエンコードをUTF-8にする必要があります。
ex. $hoge = '検索したいワード'; $hoge = mb_convert_encoding($hoge, 'UTF-8', 'auto');
例では、わかりやすいように文字列を作りましたが、
フォームで送られてきた場合も原理は同じです。
&p=[検索ワード]
次に、カテゴリを選ぶことになるのですが、
住所、郵便番号、施設、駅、Yahoo!クーポンと選べるパラメータは様々です。
今回は駅を検索してみましょう。
&category=station
カテゴリにステーションパラメータを入れるだけです。
次に表示したい件数も指定しましょう。
&n=100
100件ってことです。
指定がなければデフォルトは10件です。
出力タイプも指定できます。
&o=xml
デフォルトはxmlですが、jsonで出力という選択肢もあるようです。
最後に取得する緯度経度の測地系を選ぶことになりますが、
デフォルトはtky(日本測地系)になってますが、
googleの地図とかを絡めたりすることを考えれば、
世界測地系で取ってくる方がいいでしょう。
&datum=wgs
ではここまでで、できたあがったリクエストURLを見てみましょう。
そして、それを変数$urlに入れます。
$url = http://map.yahooapis.jp/LocalSearchService/V1/LocalSearch?appid=[ココに入力]&p=[検索ワード]&category=station&n=100&o=xml&datum=wgs
入れましたらファイルの内容を文字列に読み込む関数を使います。
$contents = file_get_contents($url);
XML文字列をオブジェクトに代入します。
$xml = simplexml_load_string($contents);
これで取得完了です。ちなみにキーワードは「心斎橋」を入れてみました。
こんなのが入ってます。
object(SimpleXMLElement)#47 (4) { ["Count"]=> string(1) "1" ["ViewCount"]=> string(1) "1" ["Query"]=> string(9) "心斎橋" ["Item"]=> object(SimpleXMLElement)#48 (7) { ["Category"]=> string(7) "Station" ["Title"]=> string(12) "心斎橋駅" ["Address"]=> string(39) "大阪府大阪市中央区心斎橋筋" ["AddressLevel"]=> string(1) "0" ["DatumTky97"]=> object(SimpleXMLElement)#49 (2) { ["Lat"]=> string(8) "34.67166" ["Lon"]=> string(10) "135.503138" } ["DatumWgs84"]=> object(SimpleXMLElement)#50 (2) { ["Lat"]=> string(15) "34.674916097409" ["Lon"]=> string(15) "135.50032880517" } ["Url"]=> object(SimpleXMLElement)#51 (0) { } } }
一つのキーワードでこれだけの情報を取得できます。
これだけあれば色んなものが作れますね。
$lat = $xml->Item->DatumWgs84->Lat; $lon = $xml->Item->DatumWgs84->Lon;
これで駅の緯度経度が取れます。
単純にこれだけでも駅名検索になりますし、
このデータをもとに、近辺に登録しているデータを取得するプログラムを作るのもありです。
こんな感じにYahoo!ローカルサーチを活用して下さい!