Google has been the soul of our life. Google’s problem-solving approach has penetrated deep inside our lives. It offers tons of services that help us to smoothen our daily tasks.
Today, in this this essential guide will teach you how to find the nearest location in Laravel 9 application using latitude and longitude.
We will show you how things are planned and put into action. Hence, we have mentioned the steps to help us find the nearest location in Laravel using location coordinates.
You must have a basic laravel application, a controller file, simple routes to request the controller, and a database connected to the laravel app. We will show you how to get the nearest location based on latitude and longitude in laravel.
How to Get the Nearest Location using Latitude and Longitude in Laravel 9
- Step 1: Create Laravel Project
- Step 2: Make Database Connection
- Step 3: Generate Controller File
- Step 4: Find Location with Latitude and Longitude
- Step 5: Build Routes
- Step 6: Start Application Server
Create Laravel Project
The first and foremost requirement is to have a blank Laravel project. To make the project ready, you must install and configure composer in your system.
Once the development machine is ready, go ahead and execute the given command.
composer create-project laravel/laravel --prefer-dist laravel-location-finder-example
Make Database Connection
Now the application is ready, the next primary task is to connect your database to the laravel app.
You have to look for the .env file; then, you need to define the database credentials in this file.
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=db_name
DB_USERNAME=root
DB_PASSWORD=
If you are using MAMP local server in macOs; make sure to append UNIX_SOCKET and DB_SOCKET below database credentials in .env file.
UNIX_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock
DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock
We have infused the database credentials in the .env file, and now the app is ready to be developed.
Generate Controller File
To write the logic to fetch the nearest location with lat and long requires a separate component.
Here is the command you can execute from the console to generate the controller.
php artisan make:controller FindLocationController
Find Location with Latitude and Longitude
We have to use the DB module to write the query to retrieve the results from the database.
Make sure to add the code to the app/Http/Controllers/FindLocationController.php file.
namespace AppHttpControllers;
use IlluminateHttpRequest;
use DB;
class FindLocationController extends Controller
{
public function index(Request $request) {
$latitude = LATTITUDE_GOES_HERE;
$longtitude = LONGITUDE_GOES_HERE;
$showResult = DB::table("users")
->select("users.id"
,DB::raw("55555 * acos(cos(radians(" . $latitude . "))
* cos(radians(users.lat))
* cos(radians(users.lon) - radians(" . $longtitude . "))
+ sin(radians(" .$latitude. "))
* sin(radians(users.lat))) AS distance"))
->groupBy("users.id")
->get();
dd($showResult);
}
}
Build Routes
Head over to the app/routes/web.php file and here in this file you have to create some routes that will communicate with the controller.
use IlluminateSupportFacadesRoute;
use AppHttpControllersFindLocationController;
Route::get('find-near-location', [FindLocationController::class, 'index']);
Start Application Server
Now everything has been set in its place. The final task is to run the application, invoke the command, and open the app on the browser.
php artisan serve
http://127.0.0.1:8000/find-near-location
Conclusion
The geographic coordinate system is a spherical or ellipsoidal coordinate system for calculating and communicating positions straight on the Earth as latitude and longitude.
It is the most straightforward, oldest, yet widely used of the various spatial reference systems that are in use.
In this guide, we learned what latitudes and longitudes are and how to use them to retrieve the nearest location in Laravel.