Ruby
GoogleMapsAPI

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

More than 3 years have passed since last update.


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: ファミリーマート 日立東金沢店"