Coğrafi konum, çok sayıda bağlamda hizmet vermektedir. Bu internet çağında her şey tek havuz içinde. Çeşitli teknolojiler, coğrafi konumları ve iki konum arasındaki mesafeyi almak için çeşitli yöntemler kullanılmakta.
İki coğrafi koordinat arasındaki mesafeyi hesaplamak için teknoloji olarak PHP MySQL kullanacağız.

Bunu nasıl yapabilirim?

MySQL Sorgusunu Kullanma

Yani, bir tablo var geo_cordiki alanı içeren latitudeve longitudeben kullanıcı girişi hesaplamak gerekir distancebaşka bir kullanıcı girişlerine sahip Km user_latitudeve user_longitude.

görüntü açıklaması

İyi! bir sorgu yazmamız gerekiyor:

Veritabanındaki tüm sonuçları kullanıcı giriş mesafesinde bulmamız gerekiyor

$distance = 50; // user input distance
$user_latitude = '26.826999'; // user input latitude
$user_longitude = '-158.265114'; // user input logtitude

$sql = "SELECT ROUND(6371 * acos (cos ( radians($user_latitude) ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians($user_longitude) ) + sin ( radians($user_latitude) ) * sin( radians( latitude ) ))) AS distance,geo_cord.* FROM geo_cord HAVING distance <= $distance";

 

  • Mil'e çevirmek için 3971 ile çarpın.
  • Kilometreye çevirmek için 6373 ile çarpın.
  • Metreye dönüştürmek için 6373000 ile çarpın.
  • Fit'e dönüştürmek için (3971 * 5280) 20914080 ile çarpın.

Aynı sonucu elde etmek için başka yöntemler de var ama ben bu basit yöntemi daha az kodlama ve hızlı sonuç ile tercih ediyorum.

PHP'yi kullanma

Wikipedia Haversine  formülünde, boylamları ve enlemleri verilen bir küre üzerindeki iki nokta arasındaki büyük daire mesafesini belirleyen bir formül buldum .

Böylece aynı zamanda sonuç verir:

function distance($latitude1, $longitude1, $latitude2, $longitude2) { 
        $pi80 = M_PI / 180; 
        $lat1 *= $pi80; 
        $lon1 *= $pi80; 
        $lat2 *= $pi80; 
        $lon2 *= $pi80; 
        $r = 6372.797; // radius of Earth in km 6371
        $dlat = $lat2 - $lat1; 
        $dlon = $lon2 - $lon1; 
        $a = sin($dlat / 2) * sin($dlat / 2) + cos($lat1) * cos($lat2) * sin($dlon / 2) * sin($dlon / 2); 
        $c = 2 * atan2(sqrt($a), sqrt(1 - $a)); 
        $km = $r * $c; 
        return round($km); 
    }
Karmaşık zorlukların üstesinden gelmek için basit yöntemler vardır. Sadece tüm zorlukları fırsatlara dönüştürmemiz gerekiyo