How to Integrate Google Maps in Laravel: Complete Step-by-Step Guide

Share this post on:
Laravel Google Maps integration tutorial - Step-by-step guide with code examples

Google Maps is one of the most widely used mapping services, and integrating it into your Laravel application can enhance user experience significantly. Whether you want to display store locations, track assets, or build location-based services, Google Maps API makes it possible.

In this guide, we’ll walk through step-by-step instructions to integrate Google Maps into a Laravel project.

Step 1: Create a New Laravel Project

If you don’t already have a Laravel project, create one using Composer:

composer create-project laravel/laravel laravel-google-maps

Step 2: Create a View for Google Maps

Inside resources/views/, create a new Blade template called map.blade.php and add the following code:

<!DOCTYPE html>

<html>

<head>

    <meta charset="utf-8">

    <meta name="viewport" content="width=device-width, initial-scale=1">

    <style>

        .text-center { text-align: center; }

        #map { width: 100%; height: 400px; }

    </style>

</head>

<body>

<h1 class="text-center">Laravel Google Maps</h1>

               <div id="map"></div>

               <!-- Google Maps API -->

<script src="https://maps.googleapis.com/maps/api/js?              key=YOUR_API_KEY&callback=initMap" async> </script>

<script>

        let map, activeInfoWindow, markers = [];

        // Initialize Google Map

        function initMap() {

            map = new google.maps.Map(document.getElementById("map"), {

                center: { lat: 28.626137, lng: 79.821603 },

                zoom: 15

            });

            map.addListener("click", function(event) {

                console.log("Map clicked at:", event.latLng.lat(), event.latLng.lng());

            });

            initMarkers();

        }

  // Add Markers

        function initMarkers() {

            const initialMarkers = <?php echo json_encode($initialMarkers); ?>;

initialMarkers.forEach((markerData, index) => {

                const marker = new google.maps.Marker({

                    position: markerData.position,

                    label: markerData.label,

                    draggable: markerData.draggable,

                    map

                });

                markers.push(marker);

                const infowindow = new google.maps.InfoWindow({

                    content: `<b>${markerData.position.lat}, ${markerData.position.lng}</b>`,

                });

                marker.addListener("click", () => {

                    if(activeInfoWindow) activeInfoWindow.close();

                    infowindow.open({ anchor: marker, map });

                    activeInfoWindow = infowindow;

                    console.log("Marker clicked:", marker.position.toString());

                });

                marker.addListener("dragend", (event) => {

                    console.log("Marker dragged to:", event.latLng.lat(), event.latLng.lng());

                });

            });

        }

    </script>

</body>

</html>

Note: Replace YOUR_API_KEY with your Google Maps API Key. (You can generate one from Google Cloud Console).

Step 3: Create a Controller

Generate a controller for handling the map logic:

php artisan make:controller MapController

Now, open app/Http/Controllers/MapController.php and add the following code:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class MapController extends Controller

{

    public function index()

    {

        $initialMarkers = [

            [

                'position' => ['lat' => 28.625485, 'lng' => 79.821091],

                'label' => ['color' => 'white', 'text' => 'P1'],

                'draggable' => true

            ],

            [

                'position' => ['lat' => 28.625293, 'lng' => 79.817926],

                'label' => ['color' => 'white', 'text' => 'P2'],

                'draggable' => false

            ],

            [

                'position' => ['lat' => 28.625182, 'lng' => 79.81464],

                'label' => ['color' => 'white', 'text' => 'P3'],

                'draggable' => true

            ]

        ];

        return view('map', compact('initialMarkers'));

    } }

Here, we are sending initial marker data (position, label, draggable property) to the view.

Step 4: Define Routes

Open routes/web.php and add:

use App\Http\Controllers\MapController;
use Illuminate\Support\Facades\Route;
Route::get('/', [MapController::class, 'index']);

Step 5: Run Your Application

Start the Laravel development server:

php artisan serve

Now open your browser at:

http://127.0.0.1:8000

You should see a Google Map with markers displayed.

In this blog, we integrated Google Maps into a Laravel application using the Google Maps JavaScript API.

Piyush Solanki

PHP Tech Lead & Backend Architect

10+ years experience
UK market specialist
Global brands & SMEs
Full-stack expertise

Core Technologies

PHP 95%
MySQL 90%
WordPress 92%
AWS 88%
  • Backend: PHP, MySQL, CodeIgniter, Laravel
  • CMS: WordPress customization & plugin development
  • APIs: RESTful design, microservices architecture
  • Frontend: React, TypeScript, modern admin panels
  • Cloud: AWS S3, Linux deployments
  • Integrations: Stripe, SMS/OTP gateways
  • Finance: Secure payment systems & compliance
  • Hospitality: Booking & reservation systems
  • Retail: E-commerce platforms & inventory
  • Consulting: Custom business solutions
  • Food Services: Delivery & ordering systems
  • Modernizing legacy systems for scalability
  • Building secure, high-performance products
  • Mobile-first API development
  • Agile collaboration with cross-functional teams
  • Focus on operational efficiency & innovation

Piyush is a seasoned PHP Tech Lead with 10+ years of experience architecting and delivering scalable web and mobile backend solutions for global brands and fast-growing SMEs.

He specializes in PHP, MySQL, CodeIgniter, WordPress, and custom API development, helping businesses modernize legacy systems and launch secure, high-performance digital products.

He collaborates closely with mobile teams building Android & iOS apps, developing RESTful APIs, cloud integrations, and secure payment systems. With extensive experience in the UK market and across multiple sectors, Piyush is passionate about helping SMEs scale technology teams and accelerate innovation through backend excellence.