如何使用 rails Geocoder 获取 place_id
How do I get place_id by using rails Geocoder
我在 rails 应用程序中使用 rails gem 'geocoder'。这是代码:
test.rb
class Test < ActiveRecord::Base
reverse_geocoded_by :latitude, :longitude do |obj,results|
if geo = results.first
obj.street = geo.street_address
obj.city = geo.city
obj.state = geo.state
obj.country = geo.country
end
end
after_validation :reverse_geocode
end
schema.rb
create_table "tests", force: :cascade do |t|
t.string "street"
t.string "city"
t.string "state"
t.string "country"
t.string "place_id"
end
在 rails 控制台中创建测试模型后;
testLoc = Test.create(latitude: "49", longitude: "101")
它生成此 Google 地图 API:http://maps.googleapis.com/maps/api/geocode/json?language=en&latlng=49.0%2C101.0&sensor=false
从那里我可以看到它有 place_id。
"place_id" : "ChIJnasu3tKddF0RqAvcjn5EhBE",
如果我将此代码添加到 test.rb 正下方 obj.country,
obj.place_id = geo.place_id
it returns NoMethodError: #
的未定义方法 `place_id'
那么,我如何通过向我的 Test.rb 添加一些代码来获得 place_id?
首先,从GoogleAPI
解析JSON
parsed_response = JSON.parse(results.to_json)
然后,从place_id
中获取值
obj.place_id = parsed_response[0]["data"]["place_id"]
我在 rails 应用程序中使用 rails gem 'geocoder'。这是代码:
test.rb
class Test < ActiveRecord::Base
reverse_geocoded_by :latitude, :longitude do |obj,results|
if geo = results.first
obj.street = geo.street_address
obj.city = geo.city
obj.state = geo.state
obj.country = geo.country
end
end
after_validation :reverse_geocode
end
schema.rb
create_table "tests", force: :cascade do |t|
t.string "street"
t.string "city"
t.string "state"
t.string "country"
t.string "place_id"
end
在 rails 控制台中创建测试模型后;
testLoc = Test.create(latitude: "49", longitude: "101")
它生成此 Google 地图 API:http://maps.googleapis.com/maps/api/geocode/json?language=en&latlng=49.0%2C101.0&sensor=false
从那里我可以看到它有 place_id。
"place_id" : "ChIJnasu3tKddF0RqAvcjn5EhBE",
如果我将此代码添加到 test.rb 正下方 obj.country,
obj.place_id = geo.place_id
it returns NoMethodError: #
的未定义方法 `place_id'那么,我如何通过向我的 Test.rb 添加一些代码来获得 place_id?
首先,从GoogleAPI
解析JSONparsed_response = JSON.parse(results.to_json)
然后,从place_id
中获取值obj.place_id = parsed_response[0]["data"]["place_id"]