Read the English version of this article: https://guven.atbakan.com/blog/calculate-distance-between-2-points-latitude-longitude-with-mysql-st_distance_sphere-method/
Eğer 2 nokta arasındaki mesafeyi ölçmek istiyorsanız, Mysql5.7 ile birlikte gelen ST_Distance_Sphere methodundan faydalanabilirsiniz.
Bir örnek verecek olursak, diyelim ki verilen noktaya en yakın üyeyi getirmek istiyorsunuz: 41.0049823,28.7319855
<?php
$latitude = 41.0049823;
$longitude = 28.7319855;
$sql = "SELECT users.id, users.username, ST_Distance_Sphere(point(users.longitude, users.latitude),point({$longitude}, {$latitude})) as distance FROM users";
Yukarıdaki query sonucunda distance
sonucunu metre biriminde alacaksınız. Burada ufak bir noktaya dikkat etmenizi istiyorum. Bu method longitue-latitude
olarak kullanılır, latitude-longitude
olarak değil. Neden bilmiyorum fakat ben sürekli "lat-lng" şeklinde kullandığım için biraz bocalamıştım.
Şimdi bir başka örnek ile pekiştirelim. "Verilen noktanın 100 metre yakınındaki üyeleri getirelim".
<?php
$latitude = 41.0049823;
$longitude = 28.7319855;
$sql = "SELECT users.id, users.username, ST_Distance_Sphere(point(users.longitude, users.latitude),point({$longitude}, {$latitude})) as distance FROM users WHERE distance < 100"
Yukarıdaki sonuç size üye listesini verecek. ST_Distance_Sphere
methodunu keşfetmeden önce sinüs, kosinüslü, tanjantlı queryler ile uğraşıyordum. Hem yavaş çalışıyordu hem de her zaman doğru sonuç vermiyordu. ST_Distance_Sphere
methoduna hayatımızı kolaylaştırdığı için teşekkürler :)