/** * https://stackoverflow.com/questions/6671183/calculate-the-center-point-of-multiple-latitude-longitude-coordinate-pairs * 几个经纬度求中心点 * For Example: * $data = array * ( * 0 = > array(45.849382, 76.322333), * 1 = > array(45.843543, 75.324143), * 2 = > array(45.765744, 76.543223), * 3 = > array(45.784234, 74.542335) * ); */ function GetCenterFromDegrees($data = []) { if (!is_array($data)) return FALSE; $num_coords = count($data); $X = 0.0; $Y = 0.0; $Z = 0.0; foreach ($data as $coord) { #$lat = $coord[0] * pi() / 180; $lat = deg2rad($coord[0]) ; #$lon = $coord[1] * pi() / 180; $lon = deg2rad($coord[1]) ; $a = cos($lat) * cos($lon); $b = cos($lat) * sin($lon); $c = sin($lat); $X += $a; $Y += $b; $Z += $c; } $X /= $num_coords; $Y /= $num_coords; $Z /= $num_coords; $lon = atan2($Y, $X); $hyp = sqrt($X * $X + $Y * $Y); $lat = atan2($Z, $hyp); #return array($lat * 180 / pi(), $lon * 180 / pi()); return array( rad2deg($lat) , rad2deg($lon)); }
转载于:https://my.oschina.net/u/3193616/blog/2243470