diff --git a/lib/geocoder/orms/active_record.rb b/lib/geocoder/orms/active_record.rb index 8f724cf95631e25341142140504dd5b3b073508b..7b585940e18b647c07a604ed558655b64cb97a0e 100644 --- a/lib/geocoder/orms/active_record.rb +++ b/lib/geocoder/orms/active_record.rb @@ -88,17 +88,16 @@ module Geocoder::Orm bearing = "(DEGREES(ATAN2( " + "SIN(RADIANS(#{lon_attr} - #{longitude})) * " + "COS(RADIANS(#{lat_attr})), (" + - "COS(RADIANS(#{latitude})) * " + - "SIN(RADIANS(#{lat_attr}))) - " + - "(SIN(RADIANS(#{latitude})) * " + - "COS(RADIANS(#{lat_attr})) * " + - "COS(RADIANS(#{lon_attr} - #{longitude}))))) + 360) % 360" + "COS(RADIANS(#{latitude})) * SIN(RADIANS(#{lat_attr}))" + + ") - (" + + "SIN(RADIANS(#{latitude})) * COS(RADIANS(#{lat_attr})) * " + + "COS(RADIANS(#{lon_attr} - #{longitude}))" + + "))) + 360)" + bearing = "CAST(#{bearing} AS decimal) % 360" distance = "#{Geocoder::Calculations.earth_radius} * 2 * ASIN(SQRT(" + - "POWER(SIN((#{latitude} - #{lat_attr}) * " + - "PI() / 180 / 2), 2) + COS(#{latitude} * PI() / 180) * " + - "COS(#{lat_attr} * PI() / 180) * " + - "POWER(SIN((#{longitude} - #{lon_attr}) * " + - "PI() / 180 / 2), 2) ))" + "POWER(SIN((#{latitude} - #{lat_attr}) * PI() / 180 / 2), 2) + " + + "COS(#{latitude} * PI() / 180) * COS(#{lat_attr} * PI() / 180) * " + + "POWER(SIN((#{longitude} - #{lon_attr}) * PI() / 180 / 2), 2) ))" options[:order] ||= "#{distance} ASC" default_near_scope_options(latitude, longitude, radius, options).merge( :select => "#{options[:select] || '*'}, " +