function search_api_location_calculate_distance in Search API Location 7.2
Calculates the distance between two lat/long values.
@link http://rosettacode.org/wiki/Haversine_formula
Parameters
array $start: Array with the keys "lat" and "lon".
array $destination: Array with the keys "lat" and "lon".
Return value
float Distance in kilometres.
1 call to search_api_location_calculate_distance()
- SearchApiViewsHandlerFieldLocation::get_value in search_api_location_views/
handler_field_location.inc - Overridden to use a metadata wrapper.
File
- ./
search_api_location.module, line 273 - Provides location based search functionality for the Search API.
Code
function search_api_location_calculate_distance($start, $destination) {
$start = array_map('deg2rad', $start);
$destination = array_map('deg2rad', $destination);
// Earth's radius in kilometers.
$radius_of_earth = 6371;
$diff_latitude = $start['lat'] - $destination['lat'];
$diff_longitude = $start['lon'] - $destination['lon'];
$a = sin($diff_latitude / 2) * sin($diff_latitude / 2) + cos($destination['lat']) * cos($start['lat']) * sin($diff_longitude / 2) * sin($diff_longitude / 2);
$c = 2 * asin(sqrt($a));
return $radius_of_earth * $c;
}