class Geokit::Geocoders::FCCGeocoder
Private Class Methods
do_reverse_geocode(latlng)
click to toggle source
Template method which does the reverse-geocode lookup.
# File lib/geokit/geocoders/fcc.rb, line 9 def self.do_reverse_geocode(latlng) latlng = LatLng.normalize(latlng) url = "#{protocol}://data.fcc.gov/api/block/find?format=json&latitude=#{Geokit::Inflector.url_escape(latlng.lat.to_s)}&longitude=#{Geokit::Inflector.url_escape(latlng.lng.to_s)}" process :json, url end
parse_json(results)
click to toggle source
JSON result looks like this
> {“County”=>{“name”=>“Wayne”, “FIPS”=>“18177”},¶ ↑
“Block”=>{“FIPS”=>“181770103002004”}, “executionTime”=>“0.099”, “State”=>{“name”=>“Indiana”, “code”=>“IN”, “FIPS”=>“18”}, “status”=>“OK”}
# File lib/geokit/geocoders/fcc.rb, line 28 def self.parse_json(results) if results.key?("Err") && results["Err"]["msg"] == "There are no results for this location" return GeoLoc.new end # this should probably be smarter. raise Geokit::Geocoders::GeocodeError if !results["status"] == "OK" loc = new_loc loc.success = true loc.precision = "block" loc.country_code = "US" loc.district = results["County"]["name"] loc.district_fips = results["County"]["FIPS"] loc.state = results["State"]["code"] loc.state_fips = results["State"]["FIPS"] loc.block_fips = results["Block"]["FIPS"] loc end