yemenpoint / filament-google-map-location-picker

filament-google-map-location-picker
MIT License
32 stars 7 forks source link

Google map Location Picker

forked from https://packagist.org/packages/sadiq/filament-gmap-location-picker

Installation

You can install the package via composer:

 composer require yemenpoint/filament-google-map-location-picker

Optionally, you can publish the config using

php artisan vendor:publish --tag="filament-google-map-location-picker-config"

Config

filament-google-map-location-picker.php


<?php

return [
    'google_map_key' => "",
];

make migration location column to database

add location column to database

...
        Schema::table('table_name', function (Blueprint $table) {
            $table->json("location")->nullable();
        });
...
use Yemenpoint\FilamentGoogleMapLocationPicker\Forms\Components\LocationPicker;

...

    public static function form(Form $form): Form
    {
        return $form->schema([
              LocationPicker::make('location')
                  ->default(json_encode(["lat" => 15.356893920277, "lng" => 44.173358011179]))//set default location
                  ->defaultZoom(12)// set zoom 
                  ->setLocationCenter([
                      'lat' => 15.356893920277,
                      'lng' => 44.173358011179,
                  ]) //set location center 
                  ->required()
                  ->columnSpan(2),
        ]);
    }
...


Model

add column name to fillable

...

    protected $fillable = [
        "location"
    ];
...

if u have separate column for lat and lng add this Mutator

...
    function setLocationAttribute($value)
    {
        //replace lat_column_name and lng_column_name with your column names
        $this->attributes['location'] = $value;
        $_location = @json_decode($value,true);
        $this->attributes['lat_column_name'] = data_get($_location,"lat");
        $this->attributes['lng_column_name'] = data_get($_location,"lng");
    }

...

Credits

License

The MIT License (MIT). Please see License File for more information.