betterbrief / silverstripe-googlemapfield
此包已被废弃且不再维护。未建议替代包。
使用经纬度DataObject字段保存位置。
v2.2.1
2018-09-24 08:20 UTC
Requires
- php: >=5.6
- silverstripe/framework: ^4
This package is not auto-updated.
Last update: 2021-08-20 23:24:43 UTC
README
允许您使用经纬度和缩放字段在DataObject中记录精确位置。
使用Google Maps API显示地图。用户可以选择放置标记的位置;然后保存着陆坐标。
您还可以使用搜索框搜索位置,该搜索框使用Google Maps Geocoding API。
支持SilverStripe 4
使用方法
最小配置
假设您的DataObject使用字段名Latitude
和Longitude
分别存储纬度和经度,那么以下是最小配置以在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。请参阅官方文档