, (*1)
This extension provides a widget to pick coordinates from a map. It uses the leaflet framework., (*2)
Changlog
See CHANGELOG., (*3)
Requirements
- Contao ^4.13||^5.0
- PHP ^7.4||^8.0
Install
1. Install using composer
php composer.phar require netzmacht/contao-leaflet-geocode-widget
2. Update your AppKernel.php
git
If you use the managed edition of Contao you can skip this step., (*4)
// Dependency is automatically installed and has to be registered
new Contao\CoreBundle\HttpKernel\Bundle\ContaoModuleBundle('leaflet-libs', $this->getRootDir()),
// Register the bundle
new Netzmacht\Contao\Leaflet\GeocodeWidget\LeafletGeocodeWidgetBundle(),
3. Update the assets
bin/console assets:install --symlink
Coordinates only
$GLOBALS['TL_DCA']['tl_example']['fields']['coordinates'] = [
'label' => ['Koordinaten', 'Geben Sie die Koordinaten ein'],
'inputType' => 'leaflet_geocode',
'eval' => [
'tl_class' => 'w50',
],
'sql' => 'varchar(255) NOT NULL default \'\''
];
Coordinates and radius
To pick the radius in meters as well, you have to configure the eval.radius
option for the related radius field.
The radius field should be a simle text input. The default
, minval
and maxval
flags are passed to the geocode
widget so that only radius in that boundary can be chosen., (*5)
$GLOBALS['TL_DCA']['tl_page']['fields']['coordinates'] = [
'label' => ['Koordinaten', 'Geben Sie die Koordinaten ein'],
'inputType' => 'leaflet_geocode',
'eval' => [
'tl_class' => 'w50',
'radius' => 'radius'
],
'sql' => 'varchar(255) NOT NULL default \'\''
];
$GLOBALS['TL_DCA']['tl_page']['fields']['radius'] = [
'label' => ['Radius', 'Angabe des Radius in Metern'],
'inputType' => 'leaflet_radius', // Optional, you can use a text widget as well
'eval' => [
'default' => 500,
'minval' => 100,
'maxval' => 5000,
'steps' => 100, // Round value to the closest 100m.
'tl_class' => 'w50',
],
'sql' => 'varchar(255) NOT NULL default \'\''
];
If you want to add an wizard icon to the radius field as well, you only have to reference the coordinates field., (*6)
$GLOBALS['TL_DCA']['tl_page']['fields']['radius'] = [
'label' => ['Radius', 'Angabe des Radius in Metern'],
'inputType' => 'leaflet_radius',
'eval' => [
'rgxp' => 'natural',
'default' => 500,
'minval' => 100,
'maxval' => 5000,
'tl_class' => 'w50 wizard',
'coordinates' => 'coordinates'
],
'sql' => 'varchar(255) NOT NULL default \'\''
];