function openlayers_geofield_field_formatter_settings_form in Openlayers 7.3
Implements hook_field_formatter_settings_form().
Heavily borrowed from geofield_field_formatter_settings_form().
See also
geofield_field_formatter_settings_form()
File
- modules/
openlayers_geofield/ openlayers_geofield.module, line 54 - Openlayers Geofield integration.
Code
function openlayers_geofield_field_formatter_settings_form($field, $instance, $view_mode, $form, &$form_state) {
$display = $instance['display'][$view_mode];
$settings = $display['settings'];
$options = array();
foreach (\Drupal\openlayers\Openlayers::loadAll('map') as $map) {
foreach ($map
->getCollection()
->getObjects('layer') as $layer) {
$key = $map
->getMachineName() . ':' . $layer
->getMachineName();
$value = sprintf("%s (%s)", $layer
->getName(), $layer
->getMachineName());
$options[$map
->getName()][$key] = $value;
}
}
if (empty($options)) {
form_set_error('openlayers_map', "Error: You have no compatible openlayers maps. Make sure that at least one map has the 'GeoField Formatter' component enabled.");
}
$element['map_layer_preset'] = array(
'#title' => t('Openlayers map & layer to use'),
'#type' => 'select',
'#default_value' => $settings['map_layer_preset'] ? $settings['map_layer_preset'] : 'openlayers_geofield_map_geofield_formatter',
'#required' => TRUE,
'#options' => $options,
'#description' => t('Select which Openlayers map and layer you would like to add the Geofield data to. Map features will be added to the source of the layer when the map is built.'),
);
$data_options = _geofield_formatter_settings_data_options($display['type']);
$element['data'] = array(
'#title' => t('Data options'),
'#type' => 'select',
'#default_value' => $settings['data'] ? $settings['data'] : 'full',
'#required' => TRUE,
'#options' => $data_options,
);
return $element;
}