Laravel Community Tools by Tighten
Laravel Nova icon Nova Packages

Installation Instructions

Nova Google Map With Autocomplete Field Package

This field allows you to work with Google Places API to autocomplete and Google Map on user input and get the full real address with all the metadata (like latitude and longitude).

Installation

You can install the package in to a Laravel app that uses Nova via composer:

composer require ghanem/google-map

Now publish config and localization files:

php artisan vendor:publish --provider="Ghanem\GoogleMap\FieldServiceProvider"

Create an app and enable Places API and create credentials to get your API key https://console.developers.google.com

Add the below to your .env file

GMAPS_API_KEY=############################

Usage

Add the use declaration to your resource and use the fields:

use Ghanem\GoogleMap\TRMap;

TRMap::make('Map'), // Google Map with address picker

Image of character counter

Customize Fields

Add custom latitude, longitude and zoom values for starting point

TRMap::make('Map')
    ->latitude('latitude_field_name')
    ->longitude('longitude_field_name')
    ->zoom('zoom'),

Hide latitude and longitude field

TRMap::make('Map')
    ->hideLatitude()
    ->hideLongitude(),

You can add any nova basic methods to fileds (Showing / Hiding, Validation ... ).

Readme

Latest Stable Version License Total Downloads

Nova Google Map with Autocomplete

A Laravel Nova field that provides an interactive Google Map with Places Autocomplete for picking locations. Users can search for addresses, drag a marker, or enter coordinates manually.

Screenshot

Requirements

  • PHP 8.1+
  • Laravel Nova 4.x or 5.x
  • A Google Cloud API key with Maps JavaScript API and Places API enabled

Installation

composer require ghanem/google-map

Publish the config file:

php artisan vendor:publish --provider="Ghanem\GoogleMap\FieldServiceProvider"

Configuration

Add your Google Maps API key to .env:

GMAPS_API_KEY=your-api-key-here

Optional environment variables with their defaults:

GMAPS_DEFAULT_LATITUDE=41.657523
GMAPS_DEFAULT_LONGITUDE=-101.157292
GMAPS_DEFAULT_ZOOM=3

Get your API key from the Google Cloud Console. Make sure to enable both Maps JavaScript API and Places API.

Usage

Add the field to your Nova resource:

use Ghanem\GoogleMap\GHMap;

public function fields(NovaRequest $request): array
{
    return [
        // ...
        GHMap::make('Location'),
    ];
}

Your model needs latitude and longitude columns (or custom names — see below).

Custom Field Names

If your database columns are not named latitude and longitude:

GHMap::make('Location')
    ->latitude('lat')
    ->longitude('lng'),

Hide Coordinate Inputs

GHMap::make('Location')
    ->hideLatitude()
    ->hideLongitude(),

Custom Zoom Level

GHMap::make('Location')
    ->zoom(10),

Override API Key Per Field

GHMap::make('Location')
    ->apiKey('different-api-key'),

All Options Combined

GHMap::make('Location')
    ->latitude('lat')
    ->longitude('lng')
    ->zoom(12)
    ->hideLatitude()
    ->hideLongitude(),

You can also use any standard Nova field methods (validation, visibility, etc.):

GHMap::make('Location')
    ->rules('required')
    ->hideFromIndex(),

Events

When a location is selected (via autocomplete or marker drag), the field emits Nova events that you can listen to in other custom fields:

Event Description
address-update Full formatted address
city-update City / locality name
state-update State / administrative area
country-update Country name
zip-code-update Postal code
latitude-update Latitude value (incoming)
longitude-update Longitude value (incoming)

Changelog

See CHANGELOG.md for release history.

License

MIT - see LICENSE for details.

Sponsor

Become a Sponsor

Screenshots

Back to Top
Added 3 years ago
Last updated 1 Month Ago
Version V3.0
Nova Version ^4.0|^5.0
Composer
ghanem/google-map
GitHub stars 8
Packagist downloads 70,202

Favorites

1 user favorited

Rating

N/A
(out of 5)
★★★★★
★★★★
★★★
★★
0 ratings

Contributors

Brought to you by Tighten

Issues/Feature Requests Stats Package Ideas