前回は Place API の利用に必要な準備を行い、API キーを取得しました。今回はこのキーを利用して API を実際にコールしてみます。
API のドキュメント
まずは、API の仕様について確認します。Place API の Documentation のリンクをクリックします。
すると『Google Maps Platform のドキュメント』ページが開きます。Places-Places API と SDK の[API]をクリックすると Place API のドキュメントが確認できます。
検索の種類
ドキュメントによると Place API では次の 3 種類の検索方法が提供されています。
Find Place | 名称や住所、電話番号などのテキスト情報から検索 |
Nearby Search | 指定した位置の周辺を検索 |
Text Search | キーワードによるあいまいな検索 |
今回は一番わかりやすい Nearby Search を検証します。
なお、ドキュメントを見て発見したのですが、Place API の新バージョンがリリースされていました。今回の記事は、検証済みの旧来の Place API を使用します。新バージョンについては機会があればまとめたいと思います。
リクエスト方法
結果を JSON 形式で取得する場合の URL は次の通りです。
https://maps.googleapis.com/maps/api/place/nearbysearch/json?parameters |
? 以降には、検索条件を指定します(後述)。使用する HTTP のメソッドは GET で、検索条件をすべて URL に記述するパターンとなります。
パラメータ
Nearby Search で利用できるパラメータをまとめます。必要なものを抜粋すると次の通りです(○ は必須)。
key | ○ | API キー |
location | ○ | 検索地点の座標(latitude,longitude) |
radius | ○ | 検索範囲(メートルで指定) |
keyword | 検索キーワード | |
language | ja を指定すると日本語で返す | |
rankby | 近い順に取得したい場合 distance を指定 この場合 radius は指定できない |
|
type | レストランやカフェなどの プレイスタイプ |
API のテスト
リクエスト方法がわかったので API をテストしてみます。今回は Postman というツールを使用して検証してみました。
HTTP のメソッドと URL を入力し、パラメータをセットしました。御堂筋線の本町駅から 1000m の範囲にある ”鳥貴族” を検索しています。
[送信]ボタンをクリックするとリクエストを API に送信します。この時の URL は次のようになります(改行して整形済み)。
https://maps.googleapis.com/maps/api/place/nearbysearch/json? key=xxxxxxxxxxxxxxxxxxxxxxxxxxxx& location=34.683742526906634,135.49698067096077& radius=1000& keyword=鳥貴族& language=ja |
実行結果は次のようになります。
検索結果は results オブジェクト内に配列で列挙されています。その要素1つが1件の場所を表します。重要項目には注釈をつけていますが、座標や名称、プレースタイプが含まれています。なお、プレース ID は Google Place データベースで一意に表す ID です。
ちなみに、実行結果には計 7 件記録されており、その順は次の通りでした。1番近い店舗が 4 番目になっていました。
近い順に並べる場合には、rankby=distance をパラメータに追加します。前述した通り rankby は radius と同時に指定できません。間違って指定すると次のようなエラーが返ります。
{ "html_attributions": [], "results": [], "status": "INVALID_REQUEST" } |
next_page_token
rankby=distance をパラメータを指定したり、検索範囲を大きくすると多くの地点情報が返されます。Place API では 1 回のレスポンスで最大 20 件までに制限されています。それ以降の結果がある場合 next_page_token がレスポンスに含まれます。
このトークンを pagetoken パラメータとして送信すると続きの 20 件が取得できます。なお、この時に指定するパラメータは key と pagetoken だけでかまいません。
続きの 20 件にまだ続きがある場合、また next_page_token がレスポンスに含まれます。これを繰り返すことにより、大量の検索結果を得る仕組みになっています。
前回 | 連載:つないでみよう | 次回 |
0 件のコメント:
コメントを投稿