You are here

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;
}