Open Street Map
Add form field with Open Street Map for write point to database
Author:
Traineratwot
Documentation
- Interface
- How it view in database
- Installation
- Usage
- Changelog
- Contributing
- Security Vulnerabilities
- Credits
- License
- Used packages
Add openstreetmap field to filament form
Full free map API
#Interface
#How it view in database
#Installation
You can install the package via composer:
composer require traineratwot/filament-openstreetmap
#Usage
Make model with migration
return new class extends Migration {
public function up(): void
{
Schema::create('points', function (Blueprint $table) {
$table->id();
$table->string('point')->nullable();
$table->json('point_array')->nullable();
$table->timestamps();
$table->softDeletes();
});
}
public function down(): void
{
Schema::dropIfExists('points');
}
};
namespace App\Models;
use MatanYadaev\EloquentSpatial\Objects\Point;
use Illuminate\Database\Eloquent\Model;
class Point extends Model
{
use SoftDeletes;
protected $guarded = ['id'];
protected function casts()
{
return [
'point' => PointCast::class,
'point_array' => PointCast::class . ':' . PointFormat::ARRAY->value ,
];
}
}
Make filament resource
<?php
namespace App\Filament\Resources;
use Traineratwot\FilamentOpenStreetMap\Forms\Components\MapInput;
class MapPointResource extends Resource
{
protected static ?string $model = MapPoint::class;
public static function form(Schema $schema): Schema
{
return $schema
->components([
MapInput::make('point')
->columnSpan(2)
->saveFormat(PointFormat::WKT)
,
MapInput::make('point_array')
->saveFormat(PointFormat::ARRAY)
,
TextEntry::make('created_at')
->label('Created Date')
->dateTime(),
TextEntry::make('updated_at')
->label('Last Modified Date')
->dateTime(),
]);
}
}
You can save in database in thar formats
foreach (PointFormat::cases() as $p){
dump($p->getExample());
}
# $point = new Point(55.7558, 37.6173);
# return $point->format(PointFormat::URL_YANDEX);
"55.7558,37.6173" // app/Console/Commands/DevTestCommand.php:17
"37.6173,55.7558" // app/Console/Commands/DevTestCommand.php:17
"POINT(37.6173 55.7558)" // app/Console/Commands/DevTestCommand.php:17
"{"type":"Point","coordinates":[37.6173,55.7558]}" // app/Console/Commands/DevTestCommand.php:17
"55°45'20.88"N 37°37'2.28"E" // app/Console/Commands/DevTestCommand.php:17
"55.755800, 37.617300" // app/Console/Commands/DevTestCommand.php:17
"https://www.google.com/maps/search/?api=1&query=55.7558,37.6173" // app/Console/Commands/DevTestCommand.php:17
"https://www.openstreetmap.org/?mlat=55.7558&mlon=37.6173#map=15/55.7558/37.6173" // app/Console/Commands/DevTestCommand.php:17
"https://yandex.ru/maps/?pt=37.6173,55.7558&z=15&l=map" // app/Console/Commands/DevTestCommand.php:17
"{"latitude":55.7558,"longitude":37.6173}" // app/Console/Commands/DevTestCommand.php:17
"[37.6173,55.7558]" // app/Console/Commands/DevTestCommand.php:17
#Changelog
Please see CHANGELOG for more information on what has changed recently.
#Contributing
Please see CONTRIBUTING for details.
#Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
#Credits
#License
The MIT License (MIT). Please see License File for more information.
#Used packages
composer: matanyadaev/laravel-eloquent-spatial
npm: ol
npm: ol-geocoder
Featured Plugins
A selection of plugins curated by the Filament team
Custom Dashboards
Let your users build and share their own dashboards with a drag-and-drop interface. Define your data sources in PHP and let them do the rest.
Filament
Data Lens
Advanced Data Visualization for Laravel Filament - a premium reporting solution enabling custom column creation, sophisticated filtering, and enterprise-grade data insights within admin panels.
Padmission
Advanced Tables (formerly Filter Sets)
Supercharge your tables with powerful features like user-customizable views, quick filters, multi-column sorting, advanced table searching, convenient view management, and more. Compatible with Resource Panel Tables, Relation Managers, Table Widgets, and Table Builder!
Kenneth Sese