A Laravel Nova field using Google Maps to provide latitude/longitude data.
adamcmoore/nova-gmap is a Laravel package for a laravel nova field using google maps to provide latitude/longitude data..
It currently has 6 GitHub stars and 171.102 downloads on Packagist (latest version v3.0).
Install it with composer require adamcmoore/nova-gmap.
Discover more Laravel packages by adamcmoore
or browse all Laravel packages to compare alternatives.
Last updated
A Nova field control for using Google Maps to update a latitude/longitude positon.
Install the package via composer with:
composer require adamcmoore/nova-gmap
Next publish the config file with:
php artisan vendor:publish --provider="Acm\NovaGmap\FieldServiceProvider.php" --tag="config"
This will create a config file at config/nova-gmaps.php where you will need to enter your Google Maps API key, default position and zoom level.
To add this field to a Nova resource:
NovaGmap::make('Location')
The field expects data to be provided as an object with keys for latitude and longitude, and will return data from the request in the same format. Use Accessors and Mutators to handle this.
An example model:
class Shop extends Model
{
$fillable = [
'title',
'description',
'address',
'location_lat',
'location_lng',
];
/*
Provide the Location value to the Nova field
*/
public function getLocationAttribute()
{
return (object) [
'latitude' => $this->location_lat,
'longitude' => $this->location_lng,
];
}
/*
Transform the returned value from the Nova field
*/
public function setLocationAttribute($value)
{
$location_lat = round(object_get($value, 'latitude'), 7);
$location_lng = round(object_get($value, 'longitude'), 7);
$this->attributes['location_lat'] = $location_lat;
$this->attributes['location_lng'] = $location_lng;
}
}