TypeError при переваривании API Карт Google - PullRequest
0 голосов
/ 20 декабря 2011

Я пытаюсь использовать API Карт Google в приложении Sinatra. Я получаю TypeError (не могу преобразовать String в Integer) всякий раз, когда я ищу адрес.

Взгляните на мой код и дайте мне знать, как вы думаете, в чем проблема.

require 'sinatra'
require 'json'
require 'open-uri'


get '/' do
  haml :index
end

post '/' do
  find_location(params[:location]) 
end

def find_location(address)
  url = "http://maps.googleapis.com/maps/api/geocode/json?address=" + CGI.escape(address) + "&sensor=false"
  resp = open(url).read
  parsed_resp = JSON.parse(resp)
  lat = parsed_resp['results']['geometry']['location']['lat']
  lng = parsed_resp['results']['geometry']['location']['lng']
  lat + " " + lng
end

1 Ответ

1 голос
/ 20 декабря 2011

parsed_resp['results'] - это массив, поэтому ваш код должен выглядеть следующим образом:

def find_location(address)
  url = "http://maps.googleapis.com/maps/api/geocode/json?address=" + CGI.escape(address) + "&sensor=false"
  resp = open(url).read
  parsed_resp = JSON.parse(resp)
  unless parsed_resp['results'].empty?
    lat = parsed_resp['results'].first['geometry']['location']['lat'].to_s
    lng = parsed_resp['results'].first['geometry']['location']['lng'].to_s
    lat + " " + lng
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...