質問編集履歴

1 誤字

Manamin

Manamin score 11

2017/09/07 13:09  投稿

Google Place APIでレーダー検索のリクエストを使うと周辺情報が200件取得できるのですが、レーダー検索リクエストの場合詳細情報が取得できないため、詳細検索リクエストを組み合わせてレーダー検索で得たplace_idを元に詳細検索し、緯度と経度と施設名を表示させたいです。(最終的には出力結果をjsonファイルに格納したいです)
しかし25行目で
```
in `[]‘: no implicit conversion of String into Integer (TypeError)
from googleplaceapi.rb:25:in `<main>‘
```
とエラーが出ます。
配列の扱い方の問題だと思うのですがどのように書き換えればいいか教えていただきたいです。
なおこちらを参考にしています。
https://developers.google.com/places/web-service/search?hl=ja
```ruby
require 'net/https'
require 'uri'
require 'json'
API_KEY = 'Your API KEY'
lat = '-33.8670522'
lng = '151.1957362'
rad = '5000'
#types = 'restaurant'
# types = 'university'
types = 'hospital'
#types = 'school'
language = 'en'
uri = URI.parse "https://maps.googleapis.com/maps/api/place/radarsearch/json?location=#{lat},#{lng}&radius=#{rad}&types=#{types}&language=en&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']
results.each_with_index do |result|
place_id = result['place_id']
uri2 = URI.parse "https://maps.googleapis.com/maps/api/place/details/json?placeid=#{place_id}&language=en&key=#{API_KEY}"
request = Net::HTTP::Get.new(uri2.request_uri)
response = Net::HTTP.start(uri2.host, uri2.port, use_ssl: uri2.scheme == 'https') do |http|
http.request(request)
end
detail = JSON.parse response.body
place_details = detail['results']
place_details.each_with_index do |place_detail|
location = place_datail['geometry']['location']
lat, lng = location['lat'], location['lng']
p "#{location['lat']}, #{location['lng']}, #{place_datail['name']}"
end
end
```
  • Ruby

    10254 questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • API

    1923 questions

    APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

  • JSON

    1558 questions

    JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る