Sha256: 3d883644b95dd75481913cb69930fe2a2fda0819819b79a4d85ea1c3650bc49c

Contents?: true

Size: 1.37 KB

Versions: 1

Compression:

Stored size: 1.37 KB

Contents

require 'sora_geocoding/version'
require 'sora_geocoding/configuration'
require 'sora_geocoding/logger'
require 'sora_geocoding/exceptions'
require 'sora_geocoding/base'
require 'sora_geocoding/query'
require 'sora_geocoding/url'
require 'sora_geocoding/request'
require 'sora_geocoding/results/geocoding'
require 'sora_geocoding/results/yahoo_geocoder'

#
# This library takes into account the number of API calls and address lookup to get the latitude and longitude.
# The API uses the Geocoding API and the Yahoo! Geocoder API.
#
module SoraGeocoding
  #
  # Search for information about an address or a set of coordinates.
  #
  def self.search(query, options = {})
    query = SoraGeocoding::Query.new(query, options) unless query.is_a?(SoraGeocoding::Query)
    query.nil? ? nil : query.execute
  end

  #
  # Look up the coordinates of the given street or IP address.
  #
  def self.coordinates(address, options = {})
    results = search(address, options)
    return if results.nil?

    { site: results[:site], coordinates: site_specific_coordinates(results[:site], results[:data]) }
  end

  class << self
    private
      def site_specific_coordinates(site, data)
        SoraGeocoding::Results.const_get(site_map[site]).new(data).coordinates
      end

      def site_map
        {
          'yahoo' => 'YahooGeocoder',
          'geocoding' => 'Geocoding'
        }
      end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sora_geocoding-0.1.0 lib/sora_geocoding.rb