承接 innoweb/silverstripe-googlemapfield 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

innoweb/silverstripe-googlemapfield

最新稳定版本:3.0.1

Composer 安装命令:

composer require innoweb/silverstripe-googlemapfield

包简介

Save locations using latitude/longitude DataObject fields.

README 文档

README

This is a SS 5 & 6 compatible fork of https://github.com/BetterBrief/silverstripe-googlemapfield.

Lets you record a precise location using latitude/longitude/zoom fields to a DataObject.

Displays a map using the Google Maps API. The user may then choose where to place the marker; the landing coordinates are then saved.

You can also search for locations using the search box, which uses the Google Maps Geocoding API.

Supports SilverStripe 6

Usage

Minimal configuration

Given your DataObject uses the field names Latitude and Longitude for storing the latitude and longitude respectively then the following is a minimal setup to have the map show in the 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();

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

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

        return $fields;
    }
}

Remember to set your API key in your site's config.yml

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

or through .env

APP_GOOGLE_MAPS_KEY=[google-api-key]

Optional configuration

Configuration options

You can either set the default options in your yaml file (see _config/googlemapfield.yml for a complete list) or at run time on each instance of the GoogleMapField object.

Setting at run time

To set options at run time pass through an array of options (3rd construct parameter):

use BetterBrief\GoogleMapField;

$field = GoogleMapField::create(
    $dataObject,
    'FieldName',
    [
        'show_search_box' => false,
        'map' => [
            'zoom' => 10,
        ],
        ...
    ]
);

Customising the map appearance

You can customise the map's appearance by passing through settings into the map key of the $options (shown above). The map settings take a literal representation of the google.maps.MapOptions

For example if we wanted to change the map type from a road map to satellite imagery we could do the following:

use BetterBrief\GoogleMapField;

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

Getting an API key

Google Maps API key

To get a Google Maps JS API key please see the official docs

Geocoding access - enabling the search box

To use the search box to find locations on the map, you'll need to have enabled the Geocoding API as well. Please see the official docs

统计信息

  • 总下载量: 20.72k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 2
  • 点击次数: 1
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 2
  • Watchers: 1
  • Forks: 39
  • 开发语言: PHP

其他信息

  • 授权协议: BSD-3-Clause
  • 更新时间: 2023-05-17