LoginSignup
69

More than 5 years have passed since last update.

Google Places APIで施設情報(コンビニ)を取得するサンプル(Ruby)

Last updated at Posted at 2014-09-04

Overview

企画を練るのにGoogle Places API周辺を調査していたのでログを。Google Places APIについては、以下に概要があります。要は、場所の情報を取得できるAPIです。

リクエスト制限については、以下の通り、本人認証が済んでいれば、100,000/dayのリクエストが実行できます。ただし、検索方式によっては、1リクエストでも、乗数が書けられて、10リクエスト分としてカウントされる場合もあります。詳細は以下のURLを参照してください。

以下引用。

Google Places API には、次のようなクエリ制限があります:

API キーを取得済みのユーザーは、24 時間に 1,000 件のリクエストを実行できます。
API コンソールで本人確認が済んでいるユーザーは、24 時間に 100,000 件のリクエストを実行できます。コンソールで本人確認を行うには、クレジット カード情報を提供して請求を行えるようにする必要があります。クレジット カードは単にユーザーの本人確認を行うために使用するものであり、このカードに Places API の使用料が請求されることはありませんのでご安心ください。

更に、検索できる場所の種類については、以下を参照してください。コンビニ情報とかも取れます。

Sample Code

APIの呼び出し方の詳細については、Googleの説明ページが日本語で親切ですので特に言及しません。特に詰まるところはありませんでした。

places_test.rb
require 'net/https'
require 'uri'
require 'json'

API_KEY = 'YOUR API KEY HERE'
lat = '36.572672'
lng = '140.643013'
rad = '5000'

types = 'convenience_store'
#types = 'grocery_or_supermarket'
#types = 'food'
#types = 'school'

language = 'ja'

uri = URI.parse "https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=#{lat},#{lng}&radius=#{rad}&types=#{types}&sensor=false&language=ja&key=#{API_KEY}"

request = Net::HTTP::Get.new(uri.request_uri)
response = Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') do |http|
  http.request(request)
end

body = JSON.parse response.body
results = body['results']

p "rad - #{rad}"
p "types - #{types}"

results.each_with_index do |place, idx|
  location = place['geometry']['location']
  lat, lng = location['lat'], location['lng']
  p "#{idx+1}: #{place['name']}"
end

Result

"rad - 5000"
"types - convenience_store"
"1: ココストア 日立末広店"
"2: ローソン 日立鮎川町五丁目"
"3: ローソン 日立国分町"
"4: ローソン L_日立金沢二丁目"
"5: ココストア 日立幸町店"
"6: ファミリーマート日立会瀬店"
"7: ミニストップ日立多賀店"
"8: ローソン 日立駅前"
"9: セイコーマート日立台原店"
"10: セブンイレブン日立本宮店"
"11: セブンイレブン日立高鈴店"
"12: セブン−イレブン日立助川町5丁目店"
"13: セブンイレブン日立滑川町2丁目店"
"14: セブンイレブン日立鮎川町1丁目店"
"15: サンクス日立けやき通店"
"16: ローソン 日立相賀町店"
"17: セブン−イレブン 日立東大沼町2丁目店"
"18: セブンイレブン日立市民運動公園前店"
"19: ファミリーマート 日立油縄子店"
"20: ファミリーマート 日立東金沢店"

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
69