betterbrief/silverstripe-googlemapfield

此包已被废弃且不再维护。未建议替代包。

使用经纬度DataObject字段保存位置。

安装量: 152,956

依赖: 8

建议者: 0

安全: 0

星标: 13

关注者: 6

分支: 15

开放问题: 5

类型:silverstripe-vendormodule

v2.2.1 2018-09-24 08:20 UTC

README

Scrutinizer Code Quality

允许您使用经纬度和缩放字段在DataObject中记录精确位置。

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

您还可以使用搜索框搜索位置,该搜索框使用Google Maps Geocoding API。

支持SilverStripe 4

使用方法

最小配置

假设您的DataObject使用字段名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]'

可选配置

配置选项

您可以在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 Maps API密钥

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

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

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