arbermustafa/filament-locationpickr-field

使用Google Maps的Filament Php位置选择器字段

2.0.4 2023-12-29 08:14 UTC

This package is auto-updated.

Last update: 2024-08-29 09:50:07 UTC


README

此软件包提供了基于Google Maps的简单位置选择器字段,在Filament中使用,基于Filament的出色工作,由Hugh Messenger完成。

安装

您可以通过composer将此软件包安装到使用Filament的Laravel应用程序中:

composer require arbermustafa/filament-locationpickr-field:"^2.0.0"

Filament V2 - 如果您正在使用Filament v2.x,您可以使用1.x分支。

您可以使用以下命令发布配置文件:

php artisan vendor:publish --tag=filament-locationpickr-field-config

配置文件包含地图渲染的默认全局自定义选项,如:API密钥、默认位置等。

可选地,您可以使用以下命令发布视图:

php artisan vendor:publish --tag=filament-locationpickr-field-views

设置Google Maps API密钥

所有使用Google Maps API都需要API密钥。如果您没有,请参阅Google的文档

一旦您有了密钥,您可以将其添加到您的.env文件中,如下所示:

GMAP_API=your_map_api_key_here

... 或发布并编辑filament-locationpickr-field.php配置文件。

准备模型

向任何用于地图数据的模型迁移模式中添加一个location

...

Schema::table('table_name', function (Blueprint $table) {
    $table->json('location')->nullable();
});

...

并将列添加到模型的fillable数组中

...

protected $fillable = [
    ...
    'location',
];

如果您有单独的latlng列,您可以使用任何用于地图数据的模型的计算属性,并使用一个转换器,该转换器在您的表中将单独的lat和lng字段转换为Google Point风格的数组,其中包含'lat'和'lng'键。

...

protected $appends = [
    ...
    'location',
];

...

public function location(): Attribute
{
    return Attribute::make(
        get: fn ($value, $attributes) => json_encode([
            'lat' => (float) $attributes['lat'],
            'lng' => (float) $attributes['lng'],
        ]),
        set: fn ($value) => [
            'lat' => $value['lat'],
            'lng' => $value['lng'],
        ],
    );
}

...

使用

表单字段

表单字段可以无选项地使用,只需将其添加到您的Filament表单模式中即可

use ArberMustafa\FilamentLocationPickrField\Forms\Components\LocationPickr;
...

    ->schema([
        ...
        LocationPickr::make('location'),
        ....
    ]);
...

make()函数中使用的名称必须是您为模型的列/计算位置属性设置的名称。

完整选项

完整的选项集如下。所有选项方法都支持闭包,以及直接值。

use ArberMustafa\FilamentLocationPickrField\Forms\Components\LocationPickr;
...

    ->schema([
        ...
        LocationPickr::make('location')
            ->mapControls([
                'mapTypeControl'    => true,
                'scaleControl'      => true,
                'streetViewControl' => true,
                'rotateControl'     => true,
                'fullscreenControl' => true,
                'zoomControl'       => false,
            ])
            ->defaultZoom(5)
            ->draggable()
            ->clickable()
            ->height('40vh')
            ->defaultLocation([41.32836109345274, 19.818383186960773])
            ->myLocationButtonLabel('My location'),
        ....
    ]);
...

信息列表条目

信息列表条目可以无选项地使用,只需将其添加到您的Filament信息列表模式中即可

use ArberMustafa\FilamentLocationPickrField\Infolists\Components\LocationPickr;
...

    ->schema([
        ...
        LocationPickr::make('location'),
        ....
    ]);
...

make()函数中使用的名称必须是您为模型的列/计算位置属性设置的名称。组件接受如defaultZoomdefaultLocationheight等选项。

在简单资源中的示例用法

Locationpickr field in modal

变更日志

请参阅变更日志以获取有关最近更改的更多信息。

贡献

如果您想为此软件包做出贡献,您可能想在真实的Filament项目中测试它

  • 将该存储库分支到您的Github账户。
  • 在本地创建一个Filament应用程序。
  • 在Filament应用程序根目录中克隆您的分支。
  • /filament-locationpickr-field目录中,为您要修复/改进的内容创建一个分支,例如fix/pickr-field

在应用程序的composer.json中安装该软件包

"require": {
    "arbermustafa/filament-locationpickr-field": "dev-fix/pickr-field as dev-main",
},
"repositories": [
    {
        "type": "path",
        "url": "./filament-locationpickr-field"
    }
]

现在运行composer update

安全漏洞

请参阅我们的安全策略,了解如何报告安全漏洞。

致谢

许可证

MIT许可证(MIT)。请参阅许可证文件获取更多信息。