innoweb/silverstripe-googlemapfield

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

安装次数: 5,803

依赖项: 1

建议者: 0

安全: 0

星标: 2

关注者: 2

分支: 31

类型:silverstripe-vendormodule

2.4.0 2024-01-19 03:04 UTC

This package is auto-updated.

Last update: 2024-09-19 04:28:07 UTC


README

这是对 https://github.com/BetterBrief/silverstripe-googlemapfield 的一个兼容 SS5 的分支。

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

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

您还可以使用搜索框搜索位置,该搜索框使用 Google Maps 地理编码 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',
    ];

    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=[google-api-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,
        ],
        ...
    ]
);

自定义地图外观

您可以通过将设置传递到上述 $optionsmap 键来自定义地图的外观。 map 设置采用 google.maps.MapOptions 的文本表示

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

use BetterBrief\GoogleMapField;

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

获取 API 密钥

Google Maps API 密钥

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

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

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