goldfinch/silverstripe-googlemapfield

使用经纬度数据对象字段保存位置。

安装: 404

依赖项: 0

建议者: 0

安全: 0

星星: 0

关注者: 0

分支: 31

类型:silverstripe-vendormodule

2.2.7 2023-12-19 19:32 UTC

This package is auto-updated.

Last update: 2024-09-19 07:59:48 UTC


README

Scrutinizer Code Quality

允许您使用纬度、经度和缩放字段将精确位置记录到数据对象中。

使用 Google 地图 API 显示地图。用户可以选择放置标记的位置;然后保存着陆坐标。

您还可以使用搜索框搜索位置,该搜索框使用 Google 地图地理编码 API。

支持 SilverStripe 5

用法

最小配置

假设您的数据对象使用字段名称 LatitudeLongitude 分别存储纬度和经度,那么以下是在 CMS 中显示地图的最小配置

use SilverStripe\ORM\DataObject;
use BetterBrief\GoogleMapField;

class Store extends DataObject
{
    private static $db = [
        'Title' => 'Varchar(255)',
        'Latitude' => 'Varchar',
        'Longitude' => 'Varchar',
        'Zoom' => 'Int',
    ];

    public function getCMSFields() {
        $fields = parent::getCMSFiels();

        // add the map field
        $fields->addFieldToTab('Root.Main', new GoogleMapField(
            $this,
            'Location'
        ));

        // remove the lat / lng fields from the CMS
        $fields->removeFieldsFromTab('Root.Main', ['Latitude', 'Longitude']);

        return $fields;
    }
}

请记住在网站的 config.yml 中设置您的 API 密钥

BetterBrief\GoogleMapField:
  default_options:
    api_key: '[google-api-key]'

或通过 .env

APP_GOOGLE_MAPS_KEY=""

可选配置

配置选项

您可以在 yaml 文件中设置默认选项(请参阅 _config/googlemapfield.yml 以获取完整列表)或在每个 GoogleMapField 对象的运行时设置。

运行时设置

要设置选项,请传递一个选项数组(第三个构造参数)

use BetterBrief\GoogleMapField;

$field = new GoogleMapField(
    $dataObject,
    'FieldName',
    [
        'api_key' => 'my-api-key',
        'show_search_box' => false,
        'map' => [
            'zoom' => 10,
        ],
        ...
    ]
);

自定义地图外观

您可以通过传递到 $options 中的 map 键(如上所示)的设置来自定义地图的外观。该 map 设置采用 google.maps.MapOptions 的字面表示

例如,如果我们想将地图类型从道路图更改为卫星图像,我们可以执行以下操作

use BetterBrief\GoogleMapField;

$field = new GoogleMapField(
    $object,
    'Location',
    [
        'map' => [
            'mapTypeId' => 'SATELLITE',
        ],
    ]
);

获取 API 密钥

Google 地图 API 密钥

要获取 Google 地图 JS API 密钥,请参阅 官方文档

地理编码访问 - 启用搜索框

要使用搜索框在地图上查找位置,您还需要启用地理编码 API。请参阅 官方文档