You are here

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;
}