mauricewijnia/nova-maps-address

一个 Laravel Nova Google Maps 字段。

v1.3.0 2020-11-23 08:42 UTC

This package is auto-updated.

Last update: 2024-09-23 16:47:04 UTC


README

Nova Maps Address 是一个 Nova 字段,允许用户使用 Google Places API 选择地址并将其存储在 JSON 列中。

目录

  1. 安装
  2. 使用

安装

要安装该字段,只需运行

composer require mauricewijnia/nova-maps-address

您需要一个可以访问 Maps、Places 和 Geocoding API 的 Google Maps API 密钥。您可以将密钥放置在 .env 文件中,如下所示

NOVA_MAPS_ADDRESS_KEY="your_key_here"

使用

此字段将数据存储为 JSON 格式在您的列中,因此我们需要将我们的列转换为数组。

要将字段添加到您的资源中,您可以这样做

use Mauricewijnia\NovaMapsAddress\MapsAddress;
...
public function fields(Request $request) {
    return [
        ...
        MapsAddress::make(__('Address'), 'address'),
        ...
    ];
}

在我们的模型中

protected $casts = [
    'address' => 'array'
]

生成的数据将具有以下格式

{
    street_name: string,
    street_number: string,
    postal_code: string,
    city: string,
    country: string,
    formatted_address: string,
    latitude: float,
    longitude: float
    address_components: array // https://developers.google.com/maps/documentation/javascript/geocoding#GeocodingAddressTypes
}

选项

您可以通过调用相应的选项方法来更改地图的一些设置

MapsAddress::make(__('Address'), 'address')
    ->zoom(5)
    ->center(['lat' => 55.5, 'lng' => 5.5])
    ->types(['address' ,'establishment']);

您也可以将参数传递给 Map js 请求,以及地图/自动完成/地理编码器类的所有可用选项。例如,指定语言和区域并过滤组件

MapsAddress::make(__('shop_admin.places.address'), 'address')->types([])
                    ->scriptUrlParams(['region' => 'jp', 'language' => 'ja'])
                    ->autoCompleteOptions(['componentRestrictions' => ['country' => ['jp']]])
                    ->mapOptions(['componentRestrictions' => ['country' => ['jp']]])