lib/geokit/geocoders.rb in geokit-premier-0.0.5 vs lib/geokit/geocoders.rb in geokit-premier-0.0.7
- old
+ new
@@ -43,13 +43,11 @@
return $+.downcase
end
def url_escape(s)
- s.gsub(/([^ a-zA-Z0-9_.-]+)/nu) do
- '%' + $1.unpack('H2' * $1.size).join('%').upcase
- end.tr(' ', '+')
+ URI.escape(s)
end
def camelize(str)
str.split('_').map {|w| w.capitalize}.join
end
@@ -597,11 +595,11 @@
# Geokit::Geocoders::GoogleGeocoder.geocode('Winnetka', :bias => bounds).state # => 'CA'
def self.do_geocode(address, options = {})
res = res = self.call_geocoder_service(self.geocode_url(address,options))
return GeoLoc.new if !res.is_a?(Net::HTTPSuccess)
json = res.body
- logger.debug "Google geocoding. Address: #{address}. Result: #{json}"
+# logger.debug "Google geocoding. Address: #{address}. Result: #{json}"
return self.json2GeoLoc(json, address)
end
# Determine the Google API url based on the google api key, or based on the client / private key for premier users
def self.geocode_url(address,options = {})
@@ -705,18 +703,20 @@
end
res.lat=addr['geometry']['location']['lat'].to_f
res.lng=addr['geometry']['location']['lng'].to_f
- ne=Geokit::LatLng.new(
- addr['geometry']['viewport']['northeast']['lat'].to_f,
- addr['geometry']['viewport']['northeast']['lng'].to_f
+ if addr['geometry'].include?('viewport')
+ ne=Geokit::LatLng.new(
+ addr['geometry']['viewport']['northeast']['lat'].to_f,
+ addr['geometry']['viewport']['northeast']['lng'].to_f
+ )
+ sw=Geokit::LatLng.new(
+ addr['geometry']['viewport']['southwest']['lat'].to_f,
+ addr['geometry']['viewport']['southwest']['lng'].to_f
)
- sw=Geokit::LatLng.new(
- addr['geometry']['viewport']['southwest']['lat'].to_f,
- addr['geometry']['viewport']['southwest']['lng'].to_f
- )
- res.suggested_bounds = Geokit::Bounds.new(sw,ne)
+ res.suggested_bounds = Geokit::Bounds.new(sw,ne)
+ end
if ret
ret.all.push(res)
else
ret=res