通过传递Zipcode,从Google地理编码服务中检索城市州和邮政信息

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过传递Zipcode,从Google地理编码服务中检索城市州和邮政信息相关的知识,希望对你有一定的参考价值。

  1. require 'net/http'
  2. require 'uri'
  3. require "rexml/document"
  4.  
  5. # Retrieves US Location data based on a passed in Zipcode. Uses
  6. # Google Maps geocoding service to retrieve a Hash of city, state, and zip
  7. # For more info on the service see: http://code.google.com/apis/maps/documentation/geocoding/
  8. #
  9. # example:
  10. # puts get_location_data(97030).inspect
  11. # outputs:
  12. # {:state=>"OR", :zip=>"97030", :city=>"Gresham"}
  13.  
  14. def get_location_data(zip)
  15. url = "http://maps.google.com/maps/geo"
  16. uri = URI.parse(url)
  17.  
  18. req = Net::HTTP::Get.new(uri.path + "?output=xml&q=#{zip}")
  19. res = Net::HTTP.start(uri.host, uri.port) do |http|
  20. http.request(req)
  21. end
  22.  
  23. data = res.body
  24. result = {}
  25. address = ""
  26.  
  27. doc = REXML::Document.new data
  28.  
  29. doc.elements.each('//Placemark[1]/address') do |element|
  30. address = element.text
  31. end
  32.  
  33. if address
  34. parts = address.split(/[,s*]/)
  35. result[:city] = parts[0]
  36. result[:state] = parts[2]
  37. result[:zip] = parts[3]
  38. end
  39.  
  40. result
  41. end

以上是关于通过传递Zipcode,从Google地理编码服务中检索城市州和邮政信息的主要内容,如果未能解决你的问题,请参考以下文章

如何从 C# 代码调用 Google 地理编码服务

我可以从仅通过城市的 Google Geocoding API 获取地理编码信息吗?

Google 地理编码服务返回错误 400 错误请求

未使用 Google 地理编码服务找到地址

带有/多个参数的 JDBCTemplate 传递

为地理编码结果自动寻找合适的缩放比例