Laravel 9 Find Nearest Location By Latitude and Longitude

Laravel 9 finds the nearest location by latitude and longitude; In this tutorial, we will learn how to find nearest location using latitude and longitude in laravel 9 apps.

As well as, fine nearby places using latitude and longitude query in laravel eloquent. we can use the following example for get nearest geolocation by mysql radius query in laravel 5, laravel 6, laravel 7, laravel 8 and laravel 9.

How to find nearest location using latitude and longitude in laravel 9 apps

Use the following steps to find nearest location using latitude and longitude in laravel 9 apps:

  • Step 1 – Install Laravel 9 App
  • Step 2 – Connecting App to Database
  • Step 3 – Add Route
  • Step 4 – Generate Controller by Command
  • Step 5 – Run Development Server
  • Step 6 – Test This App

Step 1 – Install Laravel 9 App

First of all, Execute the following command on the terminal to install/download laravel 9 application in our system(server):

composer create-project --prefer-dist laravel/laravel blog

Step 2 – Connecting App to Database

After that, open “.env” file and update the database name, username and password in the env file:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=Enter_Your_Database_Name
DB_USERNAME=Enter_Your_Database_Username
DB_PASSWORD=Enter_Your_Database_Password

Step 3 – Add Route

In this step, add routes in the web.php file. Go to app/routes/web.php file and following routes in web.php file:

use App\Http\Controllers\LocationController;
Route::get('near-places', [LocationController::class, 'index']);

Step 4 – Generate Controller by Command

In this step, execute the following command on terminal to create a controller name GoogleController. So we need to use the below command and create Controller :

php artisan make:controller LocationController

After successfully create controller go to app/controllers/LocationController.php and update the following code :

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use DB;

class LocationController extends Controller
{
    // ---------------- [ Load View ] ----------------
    public function index(Request $request) {

                $lat = YOUR_CURRENT_LATTITUDE;
		$lon = YOUR_CURRENT_LONGITUDE;

		$data = DB::table("users")
		    ->select("users.id"
		        ,DB::raw("6371 * acos(cos(radians(" . $lat . "))
		        * cos(radians(users.lat))
		        * cos(radians(users.lon) - radians(" . $lon . "))
		        + sin(radians(" .$lat. "))
		        * sin(radians(users.lat))) AS distance"))
		        ->groupBy("users.id")
		        ->get();

      dd($data);
    }
}

Step 5 – Run Development Server

In this step, execute the following command on the terminal to start development server. Use the php artisan serve command and start our server :

 php artisan serve
 If we want to run the project diffrent port so use this below command
 php artisan serve --port=8080  

Step 6 – Test This App

Open we browser and hit the following url on it:

 http://localhost:8000/near-places

Conclusion

In this google place autocomplete in laravel tutorial, we have learned how to implement google autocomplete web application using google place APIs in laravel 9 apps.

Recommended Laravel Tutorials

AuthorDevendra Dode

Greetings, I'm Devendra Dode, a full-stack developer, entrepreneur, and the proud owner of Tutsmake.com. My passion lies in crafting informative tutorials and offering valuable tips to assist fellow developers on their coding journey. Within my content, I cover a spectrum of technologies, including PHP, Python, JavaScript, jQuery, Laravel, Livewire, CodeIgniter, Node.js, Express.js, Vue.js, Angular.js, React.js, MySQL, MongoDB, REST APIs, Windows, XAMPP, Linux, Ubuntu, Amazon AWS, Composer, SEO, WordPress, SSL, and Bootstrap. Whether you're starting out or looking for advanced examples, I provide step-by-step guides and practical demonstrations to make your learning experience seamless. Let's explore the diverse realms of coding together.

Leave a Reply

Your email address will not be published. Required fields are marked *