How to Find Nearest Location using Latitude and Longitude in Laravel?

By Hardik Savani July 4, 2022 Category : PHP Laravel

Here, I will show you laravel find nearest location by lat and long. you will learn find closest location with longitude and latitude laravel. step by step explain how to find near location using latitude and longitude in laravel. if you want to see example of laravel find near by lat and long then you are a right place. You just need to some step to done get nearest location based on latitude and longitude laravel.

you can simply get the nearest geolocation by MySQL radius query in laravel 5, laravel 6, laravel 7, laravel 8 and laravel 9.

If you have places, hotels, homes, cities, states, countries, products, dealers, suppliers, etc with latitude and longitude locations then you can simply find them easily nearby you. I will give you a simple example. we will add lat and long on the users table and find users by the nearest latitude and longitude.

Let's follow the below step to do this example.

Step 1: Install Laravel

first of all we need to get fresh Laravel version application using bellow command, So open your terminal OR command prompt and run bellow command:

composer create-project laravel/laravel blog

Step 2: Create Route

In this is step we need to create one route for getting near location from lat and long example.

routes/web.php

<?php

use Illuminate\Support\Facades\Route;

use App\Http\Controllers\LocationController;

/*

|--------------------------------------------------------------------------

| Web Routes

|--------------------------------------------------------------------------

|

| Here is where you can register web routes for your application. These

| routes are loaded by the RouteServiceProvider within a group which

| contains the "web" middleware group. Now create something great!

|

*/

Route::get('near-by-places', [LocationController::class, 'index']);

Step 3: Create Controller

in this step, we need to create LocationController and add following code on that file. you have users table with lat and long columns. also add some dummy records on table as well.

app/Http/Controllers/LocationController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Model\User;

class LocationController extends Controller

{

/**

* Display a listing of the resource.

*

* @return \Illuminate\Http\Response

*/

public function index(Request $request)

{

$lat = YOUR_CURRENT_LATTITUDE;

$lon = YOUR_CURRENT_LONGITUDE;

$users = User::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($users);

}

}

Run Laravel App:

All the required steps have been done, now you have to type the given below command and hit enter to run the Laravel app:

php artisan serve

Now, Go to your web browser, type the given URL and view the app output:

http://localhost:8000/near-by-places

i hope it can help you...