Laravel 10 Google Autocomplete Address Tutorial

Google Autocomplete Address is commonly used in Laravel, as well as in other web development frameworks, to enhance the user experience and improve the accuracy of address input. 

Step 1: Install Laravel 10

composer create-project laravel/laravel example-app

Step 2: Create Route

create some routes for google autocomplete address example view.

routes/web.php

<?php
  
    use Illuminate\Support\Facades\Route;
      
    use App\Http\Controllers\GoogleController;
      
    /*
    |--------------------------------------------------------------------------
    | 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('google-autocomplete', [GoogleController::class, 'index']);

Step 3: Create Controller

app/Http/Controllers/GoogleController.php 


    <?php
  
    namespace App\Http\Controllers;
      
    use Illuminate\Http\Request;
    use Illuminate\View\View;
      
    class GoogleController extends Controller
    {
        /**
         * Write code on Method
         *
         * @return response()
         */
        public function index(): View
        {
            return view('googleAutocomplete');
        }
    }

Step 4: Put Google Map API Key in Env File

.env 

GOOGLE_MAP_KEY=YOUR_GOOGLE_API_KEY

Step 5: Create Blade Files

resources/views/googleAutocomplete.blade.php 

<!DOCTYPE html>
    <html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
      
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>Laravel Google Autocomplete Address Example</title>
        <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
        <script src="https://code.jquery.com/jquery-3.4.1.js"></script>
    </head>
      
    <body>
        <div class="container mt-5">
            <h2>Laravel Google Autocomplete Address Example</h2>
      
            <div class="form-group">
                <label>Location/City/Address</label>
                <input type="text" name="autocomplete" id="autocomplete" class="form-control" placeholder="Choose Location">
            </div>
      
            <div class="form-group" id="latitudeArea">
                <label>Latitude</label>
                <input type="text" id="latitude" name="latitude" class="form-control">
            </div>
      
            <div class="form-group" id="longtitudeArea">
                <label>Longitude</label>
                <input type="text" name="longitude" id="longitude" class="form-control">
            </div>
            <button type="submit" class="btn btn-primary">Submit</button>
        </div>
      
        <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
        <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
      
        <script type="text/javascript"
            src="https://maps.google.com/maps/api/js?key={{ env('GOOGLE_MAP_KEY') }}&libraries=places" ></script>
        <script>
            $(document).ready(function () {
                $("#latitudeArea").addClass("d-none");
                $("#longtitudeArea").addClass("d-none");
            });
        </script>
        <script>
            google.maps.event.addDomListener(window, 'load', initialize);
      
            function initialize() {
                var input = document.getElementById('autocomplete');
                var autocomplete = new google.maps.places.Autocomplete(input);
      
                autocomplete.addListener('place_changed', function () {
                    var place = autocomplete.getPlace();
                    $('#latitude').val(place.geometry['location'].lat());
                    $('#longitude').val(place.geometry['location'].lng());
      
                    $("#latitudeArea").removeClass("d-none");
                    $("#longtitudeArea").removeClass("d-none");
                });
            }
        </script>
    </body>
    </html>

Now we are ready to run 

php artisan serve

Now you can open below URL on your browser and see output:

localhost:8000/google-autocomplete