2013-03-01 92 views
0

我有两个点(纬度1,经度1)和(纬度2,经度2)。我如何在PHP中确定需要从点1到点2进行的过程?从坐标到坐标的确定过程

的做法是北,南,东,或西这很可能会从度转换?

谢谢!

+0

我看着在正上方的一个链接,但在弧度产生一个结果,我真的需要在一些程度感谢 – NCoder 2013-03-01 01:27:00

回答

1
// Function: latlon_bearing_great_circle 
// Desc: This function calculates the initial bearing you need to travel 
// from Point A to Point B, along a great arc. Repeated calls to this 
// could calculate the bearing at each step of the way. 
function latlon_bearing_great_circle($lat_a, $lon_a, $lat_b, $lon_b) { 
// Convert our degrees to radians: 
list($lat1, $lon1, $lat2, $lon2) = 
    _deg2rad_multi($lat_a, $lon_a, $lat_b, $lon_b); 

// Run the formula and store the answer (in radians) 
$rads = atan2(
     sin($lon2 - $lon1) * cos($lat2), 
     (cos($lat1) * sin($lat2)) - 
       (sin($lat1) * cos($lat2) * cos($lon2 - $lon1))); 

// Convert this back to degrees to use with a compass 
$degrees = rad2deg($rads); 

// If negative subtract it from 360 to get the bearing we are used to. 
$degrees = ($degrees < 0) ? 360 + $degrees : $degrees; 

return $degrees; 
} 

// Function: _deg2rad_multi 
// Desc: A quick helper function. Many of these functions have to convert 
// a value from degrees to radians in order to perform math on them. 
function _deg2rad_multi() { 
    // Grab all the arguments as an array & apply deg2rad to each element 
    $arguments = func_get_args(); 
    return array_map('deg2rad', $arguments); 
} 

http://fil.ya1.ru/PHP_5_in_Practice/index.htm#page=0768667437/ch02lev1sec6.html

+0

我会试试这个 – NCoder 2013-03-01 01:27:51