Search code examples
phpmysqlgeolocationlatitude-longitude

Searching a MySQL database for values serving the input lat/long


This question is different from regular mysql lat/long, radius based data fetching

I want to search a mysql database table which contains following columns for example-

ID  Items   lat       long      serving_radius(in km)

1   Item1  26.120888  85.364723    2
2   Item2  26.120888  85.364723    5
3   Item3  25.859800  85.786598    4
4   Item4  26.594900  85.504799    8

Now if a user has lat/long (29.941095/77.812424) wants to know which of these items can be served at his location. Then how i will fetch the result using php & mysql.


Solution

  • Is "serving_radius" already stored in your table ? What you can do is fetch distance and check if its under serving_radius

    SELECT serving_radius, 
    (6371 * acos(cos(radians(" . $userLatitude . ")) * cos(radians(`latitude`)) * cos(radians(`longitude`) - radians(" . $userLongitude . ")) + sin(radians(" . $userLatitude . ")) * sin(radians(`latitude`)))) as distance 
    having distance < serving_radius