phpは2つの緯度間の距離を計算する

639 ワード

/**
 *      2        ,    
 * @param $lat1
 * @param $lon1
 * @param $lat2
 * @param $lon2
 * @param  $radius
 * @return float
 */
function distance($lat1, $lon1, $lat2, $lon2, $radius = 6378140)
{
    $rad = floatval(M_PI / 180.0);
    $lat1 = floatval($lat1) * $rad;
    $lon1 = floatval($lon1) * $rad;
    $lat2 = floatval($lat2) * $rad;
    $lon2 = floatval($lon2) * $rad;
    $theta = $lon2 - $lon1;
    $dist = acos(sin($lat1) * sin($lat2) +
        cos($lat1) * cos($lat2) * cos($theta)
    );
    if ($dist < 0) {
        $dist += M_PI;
    }
    $dist = ceil($dist * $radius);
    return $dist;
}