arbermustafa / filament-locationpickr-field
使用Google Maps的Filament Php位置选择器字段
Requires
- php: ^8.1
- filament/forms: ^3.0
- spatie/laravel-package-tools: ^1.13.5
Requires (Dev)
- pestphp/pest: ^2.10
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', ];
如果您有单独的lat
和lng
列,您可以使用任何用于地图数据的模型的计算属性,并使用一个转换器,该转换器在您的表中将单独的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()
函数中使用的名称必须是您为模型的列/计算位置属性设置的名称。组件接受如defaultZoom
、defaultLocation
和height
等选项。
在简单资源中的示例用法
变更日志
请参阅变更日志以获取有关最近更改的更多信息。
贡献
如果您想为此软件包做出贡献,您可能想在真实的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)。请参阅许可证文件获取更多信息。