İki koordinat (latitude / longitude) arasındaki mesafeyi hesaplamak

Standard

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

Print Friendly, PDF & Email
Facebooktwitterlinkedin

3 thoughts on “İki koordinat (latitude / longitude) arasındaki mesafeyi hesaplamak

  1. 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’);

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir