2013-06-24 7 views
0

다음 코드를 사용했지만 소스에서 목적지까지의 거리를 제공합니다. 그러나 도로 거리가 필요합니다. 제발 도와주세요.소스 위도와 경도에서 목적지까지의 도로 거리를 계산하십시오.

이 거리지만이 거리는 거리와 거리가 필요합니다.

$center_lat =$_POST['lat']; 

//19.159519;// 
$center_lng =$_POST['lng'];//72.995782;// 
$radius = '3963.0'; 
$range=$_POST['range']; 
//echo $center_lng; 
// Set the active mySQL database 
$db_selected = mysql_select_db("mapdb", $connection); 

// Search the rows in the markers table 
$query = sprintf("SELECT name,lat, lng, (3959 * acos(cos(radians('%s')) * cos(radians(lat)) * cos(radians(lng) - radians('%s')) + sin(radians('%s')) * sin(radians(lat)))) AS distance FROM hospitals HAVING distance < '%s' ORDER BY distance LIMIT 0 , 20", 
    mysql_real_escape_string($center_lat), 
    mysql_real_escape_string($center_lng), 
    mysql_real_escape_string($center_lat), 
    mysql_real_escape_string($radius)); 
$result = mysql_query($query); 

if (!$result) { 
    die("Invalid query: " . mysql_error()); 
} 
else 
{ 
    echo "Done"; 
} 
// header('Content-type: application/json'); 
//$output = array(); 
$i=0; 

while($row = mysql_fetch_assoc($result)) { 
    if($range > 0) 
     { 
     $theta = $center_lng - $row['lng']; 
     $distance = (sin(deg2rad($center_lat)) * sin(deg2rad($row['lat']))) + (cos(deg2rad($center_lat)) * cos(deg2rad($row['lat'])) * cos(deg2rad($theta))); 
     $distance = acos($distance); 
     $distance = rad2deg($distance); 
     $distance = $distance * 60 * 1.1515; 
     $distance = $distance *1.609344; 
     if($range > round($distance,2)) 
     { 
      $info[$i] = "\"".$row['lat']."&".$row['lng']."@".$row['name']; 
      $i=$i+1;    
     } 
     $myTwitterResult1 = array($info); 
    } 
    else 
    { 
     $info[$i] = "\"".$row['lat']."&".$row['lng']."@".$row['name']; 
     $i=$i+1; 
     $myTwitterResult1 = array($info); 
    } 
} 
    $myJSONTweets = json_encode($myTwitterResult1); 
    echo $myJSONTweets; 
+0

도로 거리에 대한 마법의 공식은 없습니다. 먼저 도로지도가 필요합니다. – DevZer0

+0

거리를 찾을 수 없다면? – hemant

+0

Google지도 – DevZer0

답변

0

이 기능은 당신에게 도움이 될 수

function distance($lat1, $lon1, $lat2, $lon2, $unit) 
{ 
    $angle = $lon1 - $lon2; 
    $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) *  cos(deg2rad($lat2)) * cos(deg2rad($angle)); 
$dist = acos($dist); 
$dist = rad2deg($dist); 
$miles = $dist * 60 * 1.1515; 
$unit = strtoupper($unit); 
if ($unit == "K") { 
    return ($miles * 1.609344); 
} else if ($unit == "N") { 
    return ($miles * 0.8684); 
} else { 
    return $miles; 
    } 
} 
echo distance(32.9697, -96.80322, 29.46786, -98.53506, "K") . " Kilometers<br>"; 

대한 추가 정보를 원하시면 here

+0

-Rajeev Ranjan 내 코드에서 동일한 함수를 사용했습니다.이 코드를 볼 수 있습니다.이 코드는 필요 없습니다. 이것은 나에게 공기 거리를 돌려 준다. – hemant

+0

@hemant이 경우 Google지도 API를 사용하는 방법을 찾으십시오. –