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 NZTA/googlemap-leafletfield
Import the field
use NZTA\LeafletField\LeafletField;
Create a text database field to store the geojson value.
public static $db = [
'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.
NZTA\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([
'center' => [
'latitude' => '-40.866119',
'longitude' => '174.143780'
],
'zoom' => 5
]);
$field->setDrawOptions([
'polyline' => [
'shapeOptions' => [
'color' => '#269634'
]
],
'polygon' => [
'allowIntersection' => false,
'drawError' => [
'color' => '#b00b00',
'timeout' => 1000
]
],
'rectangle' => false,
'circle' => false
]);
The draw options are set using the same structure as Leaflet.draw options.
- SilverStripe 4.0