function earth_distance_sql in Location 5
Same name and namespace in other branches
- 5.3 earth.inc \earth_distance_sql()
- 6.3 earth.inc \earth_distance_sql()
- 7.5 earth.inc \earth_distance_sql()
- 7.3 earth.inc \earth_distance_sql()
- 7.4 earth.inc \earth_distance_sql()
3 calls to earth_distance_sql()
- location_search_results in ./
location.module - location_views_filter_handler_proximity in contrib/
location_views/ location_views.module - _location_nearby_postalcodes in ./
location.inc - This is the main logic-level function for performing proximity postal-code searches. It calls a number of helper functions for finding postal_code results in each country, narrowing down results, formatting the returned array, and sorting the returned…
File
- ./
earth.inc, line 98
Code
function earth_distance_sql($longitude, $latitude, $tbl_alias = '') {
// Make a SQL expression that estimates the distance to the given location.
$long = deg2rad($longitude);
$lat = deg2rad($latitude);
$radius = earth_radius($latitude);
// If the table alias is specified, add on the separator.
$tbl_alias = empty($tbl_alias) ? $tbl_alias : $tbl_alias . '.';
$coslong = cos($long);
$coslat = cos($lat);
$sinlong = sin($long);
$sinlat = sin($lat);
return "(IFNULL(ACOS({$coslat}*COS(RADIANS({$tbl_alias}latitude))*({$coslong}*COS(RADIANS({$tbl_alias}longitude)) + {$sinlong}*SIN(RADIANS({$tbl_alias}longitude))) + {$sinlat}*SIN(RADIANS({$tbl_alias}latitude))), 0.00000)*{$radius})";
}