def reverse_geocode(options = {using: Geokit::Geocoders::MultiGeocoder})
      if options[:using].is_a?(String) || options[:using].is_a?(Symbol)
        class_name =
          "#{Geokit::Inflector.camelize(options[:using].to_s)}Geocoder"
        provider = Geokit::Geocoders.const_get(class_name)
      elsif options[:using].respond_to?(:do_reverse_geocode)
        provider = options[:using]
      else
        raise ArgumentError.new("#{options[:using]} is not a valid geocoder.")
      end

      provider.send(:reverse_geocode, self)
    end
def reverse_geocode(options = {using: Geokit::Geocoders::MultiGeocoder})
      if options[:using].is_a?(String) || options[:using].is_a?(Symbol)
        class_name =
          "#{Geokit::Inflector.camelize(options[:using].to_s)}Geocoder"
        provider = Geokit::Geocoders.const_get(class_name)
      elsif options[:using].respond_to?(:do_reverse_geocode)
        provider = options[:using]
      else
        raise ArgumentError.new("#{options[:using]} is not a valid geocoder.")
      end

      provider.send(:reverse_geocode, self)
    end
Reverse geocodes a LatLng object using the MultiGeocoder (default), or
 optionally using a geocoder of your choosing. Returns a new Geokit::GeoLoc
 object

 ==== Options
 * :using  - Specifies the geocoder to use for reverse geocoding. Defaults
             to MultiGeocoder. Can be either the geocoder class (or any
             class that implements do_reverse_geocode for that matter), or
             the name of the class without the "Geocoder" part
             (e.g. :google)

 ==== Examples
 LatLng.new(51.4578329, 7.0166848).reverse_geocode
 => #<Geokit::GeoLoc:0x12dac20 @state...>
 LatLng.new(51.4578329, 7.0166848).reverse_geocode(:using => :google)
 => #<Geokit::GeoLoc:0x12dac20 @state...>
 LatLng.new(51.4578329, 7.0166848).reverse_geocode(:using =>
   Geokit::Geocoders::GoogleGeocoder)
 => #<Geokit::GeoLoc:0x12dac20 @state...>