goldfinch / silverstripe-googlemapfield
使用经纬度数据对象字段保存位置。
2.2.7
2023-12-19 19:32 UTC
Requires
- php: >=8.1
- silverstripe/framework: ^4 || ^5
Replaces
README
- SS5 兼容的 BetterBrief/silverstripe-googlemapfield 分支
允许您使用纬度、经度和缩放字段将精确位置记录到数据对象中。
使用 Google 地图 API 显示地图。用户可以选择放置标记的位置;然后保存着陆坐标。
您还可以使用搜索框搜索位置,该搜索框使用 Google 地图地理编码 API。
支持 SilverStripe 5
用法
最小配置
假设您的数据对象使用字段名称 Latitude
和 Longitude
分别存储纬度和经度,那么以下是在 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。请参阅 官方文档