function konumlarArasiMesafeyiGetir($enlem1, $boylam1, $enlem2, $boylam2) { $theta = $boylam1 - $boylam2; $mil = (sin(deg2rad($enlem1)) * sin(deg2rad($enlem2))) + (cos(deg2rad($enlem1)) * cos(deg2rad($enlem2)) * cos(deg2rad($theta))); $mil = acos($mil); $mil = rad2deg($mil); $mil = $mil * 60 * 1.1515; $feet = $mil * 5280; $yard = $feet / 3; $kilometre = $mil * 1.609344; $metre = $kilometre * 1000; return compact('mil','feet','yard','kilometre','metre'); }Yukarıda hazırlanan metodda öncelikle parametre olarak girilen enlem boylam bilgilerinden boylam bilgilerinin birbirinden çıkarılması sağlanmıştır. Elde edilen değer ise deg2grad() fonksiyonu sayesinde dereceden radiusa dönüştürülmüştür. Ortaya çıkan değerin sin() ve cos() fonksiyonları ile sayesinde cosinüs ve sinüs değerleri elde edilmiştir. Aslında geometride kullanılan hipotenüs verisinin bulunmasında kullanılan yöntemin aynısı bu fonksiyonda da kullanılarak sonuç metre,kilometre,feet e yard ölçü birimlerine bağlı olarak elde edilmiştir. Fonksiyonu çağırmak için aşağıda bulunan kod parçacığını konumlarArasiMesafeyiGetir fonksiyonun hemen altına ekleyelim.
$konum1 = array('enlem' => 40.6167, 'boylam' => 43.1000); // Kars iline ait enlem-boylam bilgisi $konum2 = array('enlem' => 41.0136, 'boylam' => 28.9550); // İstanbul iline ait enlem-boylam bilgisi $mesafe = konumlarArasiMesafeyiGetir($konum1['enlem'], $konum1['boylam'], $konum2['enlem'], $konum2['boylam']); foreach ($mesafe as $birim => $deger) { echo $birim.': '.number_format($deger,4).'<br />'; }
Örnek veri olarak Kars-İstanbul illeri arası mesafenin hesaplanmasını sağladım. Bilgisayarımın browser alanına http://localhost/mesafe.php yazdığımda aşağıda bulunan sonuçlar listelendi.
mil: 739.3247 feet: 3,903,634.4912 yard: 1,301,211.4971 kilometre: 1,189.8278 metre: 1,189,827.7929