Provides a form field type allowing users to draw features on a map, the features are stored as geoJSON objects in a single database field.
$ composer require benmanu/silverstripe-leafletfield
Import the field
use BenManu\LeafletField\LeafletField;
Create a text database field to store the geojson value.
public static $db = array(
'Geometry' => 'Text',
);
Create a LeafletField, passing through the object that you want to store the value against.
$field = new LeafletField('Geometry', 'Geometry', $this);
Define default field options through config.
BenManu\LeafletField\LeafletField:
map_options:
center:
latitude: "-40.866119"
longitude: "174.143780"
zoom: 5
draw_options:
polyline:
shapeOptions:
color: '#269634'
polygon:
allowIntersection: false
drawError:
color: '#b00b00'
timeout: 1000
rectangle: false
circle: false
Define custom options for individual field instances (overrides defaults).
$field->setLimit(1); // Limit the amount of objects the field can contain.
$field->setMapOptions(array(
'center' => array(
'latitude' => '-40.866119',
'longitude' => '174.143780'
),
'zoom' => 5
));
$field->setDrawOptions(array(
'polyline' => array(
'shapeOptions' => array(
'color' => '#269634'
)
),
'polygon' => array(
'allowIntersection' => false,
'drawError' => array(
'color' => '#b00b00',
'timeout' => 1000
)
),
'rectangle' => false,
'circle' => false
));
The draw options are set using the same structure as Leaflet.draw options.
- Ben Manu ben@silverstripe.com
- SilverStripe 4.0