Skip to content
Snippets Groups Projects
Commit 34021a68 authored by Alex Reisner's avatar Alex Reisner
Browse files

Extract repeated code into new method.

parent c3a699ec
No related branches found
No related tags found
No related merge requests found
...@@ -116,24 +116,30 @@ module Geocoder::Store ...@@ -116,24 +116,30 @@ module Geocoder::Store
) )
end end
## def bearing_from_sql_options(latitude, longitude, options = {})
# Scope options hash for use with a database that supports POWER(),
# SQRT(), PI(), and trigonometric functions SIN(), COS(), ASIN(),
# ATAN2(), DEGREES(), and RADIANS().
#
def full_near_scope_options(latitude, longitude, radius, options)
if !options.include?(:bearing) if !options.include?(:bearing)
options[:bearing] = Geocoder::Configuration.distances options[:bearing] = Geocoder::Configuration.distances
end end
if options[:bearing] if options[:bearing]
bearing = Geocoder::Sql.full_bearing( method_prefix = using_sqlite? ? "approx" : "full"
Geocoder::Sql.send(
method_prefix + "_bearing",
latitude, longitude, latitude, longitude,
full_column_name(geocoder_options[:latitude]), full_column_name(geocoder_options[:latitude]),
full_column_name(geocoder_options[:longitude]), full_column_name(geocoder_options[:longitude]),
options options
) )
end end
end
##
# Scope options hash for use with a database that supports POWER(),
# SQRT(), PI(), and trigonometric functions SIN(), COS(), ASIN(),
# ATAN2(), DEGREES(), and RADIANS().
#
def full_near_scope_options(latitude, longitude, radius, options)
options[:units] ||= (geocoder_options[:units] || Geocoder::Configuration.units) options[:units] ||= (geocoder_options[:units] || Geocoder::Configuration.units)
bearing = bearing_from_sql_options(latitude, longitude, options)
distance = distance_from_sql_options(latitude, longitude, options) distance = distance_from_sql_options(latitude, longitude, options)
conditions = ["#{distance} <= ?", radius] conditions = ["#{distance} <= ?", radius]
default_near_scope_options(latitude, longitude, radius, options).merge( default_near_scope_options(latitude, longitude, radius, options).merge(
...@@ -152,22 +158,9 @@ module Geocoder::Store ...@@ -152,22 +158,9 @@ module Geocoder::Store
# only exist for interface consistency--not intended for production! # only exist for interface consistency--not intended for production!
# #
def approx_near_scope_options(latitude, longitude, radius, options) def approx_near_scope_options(latitude, longitude, radius, options)
if !options.include?(:bearing)
options[:bearing] = Geocoder::Configuration.distances
end
if options[:bearing]
bearing = Geocoder::Sql.approx_bearing(
latitude, longitude,
full_column_name(geocoder_options[:latitude]),
full_column_name(geocoder_options[:longitude])
)
else
bearing = false
end
options[:units] ||= (geocoder_options[:units] || Geocoder::Configuration.units) options[:units] ||= (geocoder_options[:units] || Geocoder::Configuration.units)
bearing = bearing_from_sql_options(latitude, longitude, options)
distance = distance_from_sql_options(latitude, longitude, options) distance = distance_from_sql_options(latitude, longitude, options)
b = Geocoder::Calculations.bounding_box([latitude, longitude], radius, options) b = Geocoder::Calculations.bounding_box([latitude, longitude], radius, options)
args = b + [ args = b + [
full_column_name(geocoder_options[:latitude]), full_column_name(geocoder_options[:latitude]),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment