我卡住了,需要一些幫助。我有一個擁有3000多個緯度和經度的數據庫,我試圖將它們轉換爲十進制經度和緯度,這樣我就可以顯示兩個座標之間的距離。這兩個座標在頁面的url中傳遞。第一個(lat1 & lon1)已經轉換,但第二個(lat2 & lon2)不是。我的數據庫中的緯度和經度存儲如下:26°56.34308'-094°41.32328',所以我認爲這些逗號可能會被刪除。我從幾個來源獲得了一些代碼,但我不確定如何正確地將它們組合在一起。需要幫助轉換和計算距離
///// Get the two locations from the url
$lat1 = $_GET[lat1];
$lon1 = $_GET[lon1];
////// lat2 & Lon2 are the ones that need to be converted
$lat2 = $_GET[lat2];
$lon2 = $_GET[lon2];
///// Convert lat2 & lon2 into decimal format
$pos1 = strrpos($mystring, "°");
$pos2 = strrpos($mystring, ".");
$pos3 = strrpos($mystring, "'");
// Get subsring from a string: substr(source, start, length)
$deg = substr($mystring, 0, $pos1);
$min = substr($mystring, $pos1, $pos2 - $pos1);
$sec = substr($mystring, $pos2, $pos3 - $pos2);
function DMStoDEC($deg,$min,$sec) {
// Converts DMS (Degrees/minutes/seconds)
// to decimal format longitude/latitude
return $deg+((($min*60)+($sec))/3600);
}
//////calculate the distance
function distance($lat1, $lon1, $lat2, $lon2, $unit) {
$theta = $lon1 - $lon2;
$dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) +
cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
$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;
}
}
// Miles
echo distance($lat1, $lon1, $lat2, $lon2, "m") . " miles<br><br>";
//Kilometers
echo distance($lat1, $lon1, $lat2, $lon2, "k") . " kilometers<br><br>";
//Nautical miles
echo distance($lat1, $lon1, $lat2, $lon2, "N") . " Nautical miles";
是否有任何錯誤發生的特定行? – jmishra 2012-03-08 04:13:03
您已打開此問題的確切副本。 – Josh 2012-03-08 05:46:45
檢查此鏈接http://code.google.com/apis/maps/documentation/distancematrix/ – 2012-03-08 06:08:47