Bir çok uygulamada işimize yarayabilecek bi işlemdir bu.. 2 cafe arasındaki mesafeyi bulmak veya kişinin anlık konumu ile xxx mekanın arasındaki mesafe gibi.. Peki bunu nasıl yapıyoruz hiç düşündünüz mü?
Lafı uzatmadan bununla ilgili çok basit fonksiyon paylaşıyorum sizlerle. Bu fonksiyon ile koordinatlar arasındaki mesafeyi farklı formatlarda alabilirsiniz;
<?php function getDistanceBetweenPointsNew($latitude1, $longitude1, $latitude2, $longitude2) { $theta = $longitude1 - $longitude2; $miles = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2))) + (cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) * cos(deg2rad($theta))); $miles = acos($miles); $miles = rad2deg($miles); $miles = $miles * 60 * 1.1515; $seamiles = $miles * 0.868976242; $feet = $miles * 5280; $yards = $feet / 3; $kilometers = $miles * 1.609344; $meters = $kilometers * 1000; return compact('miles','feet','yards','kilometers','meters','seamiles'); } $point1 = array('lat' => 40.770623, 'long' => -73.964367); $point2 = array('lat' => 40.758224, 'long' => -73.917404); $distance = getDistanceBetweenPointsNew($point1['lat'], $point1['long'], $point2['lat'], $point2['long']); foreach ($distance as $unit => $value) { echo $unit.': '.number_format($value,4).' '; } ?>
Hepsi bu kadar, görüldüğü kadar zor olmasa gerek.. 🙂
Direk kaynak koda erişmek isterseniz: https://github.com/onurcanalp/PHP/blob/master/difference_2_lat_lon.php
Elinize sağlık; iki mesafe arası havada ve denizde sıklıkla kullanıldığı için birde destek olarak deniz mili eklemek isterim;
$seamiles=$miles*0,868976242;
return compact(‘miles’,’feet’,’yards’,’kilometers’,’meters’,’seamiles’);
Teşekkürler, onu da ekledim.. Kullanan kişiler faydalansın..
Benim için çok faydalı oldu aradığım tamda buydu teşekkürler hocam.
bunu çoklu olarak yapabiliyormuyuz? mesela 4-5 konum birden.
Bu soruyu sorduğunuza göre “evet” demem halinde sonraki soru “nasıl? Yardımcı olur musunuz?” olacak diye korkuyorum 🙂