You are here

class openlayers_layer_type_openlayers_views_vector in Openlayers 7.2

Same name and namespace in other branches
  1. 6.2 modules/openlayers_views/includes/layer_types/openlayers_views_vector.inc \openlayers_layer_type_openlayers_views_vector

Hierarchy

Expanded class hierarchy of openlayers_layer_type_openlayers_views_vector

1 string reference to 'openlayers_layer_type_openlayers_views_vector'
openlayers_views_openlayers_views_vector_openlayers_layer_types in modules/openlayers_views/plugins/layer_types/openlayers_views_vector.inc
Ctools plugin definition

File

modules/openlayers_views/plugins/layer_types/openlayers_views_vector.inc, line 22
OpenLayers Views Vector Layer Type

View source
class openlayers_layer_type_openlayers_views_vector extends openlayers_layer_type {

  /**
   * Provide initial values for options.
   */
  function options_init() {
    return array(
      'layer_handler' => 'openlayers_views_vector',
      'layer_type' => 'openlayers_views_vector',
      'projection' => array(
        'EPSG:4326',
      ),
      'isBaseLayer' => FALSE,
      'vector' => TRUE,
      'type' => 'Vector',
      'url' => array(),
      'options' => array(
        'rendererOptions' => array(
          'yOrdering' => TRUE,
        ),
      ),
      'events' => array(),
      'views' => array(),
    );
  }

  /**
   * Options form which generates layers
   */
  function options_form($defaults = array()) {
    $form = array();
    $views = views_get_all_views();
    $options = array(
      '' => '<none>',
    );
    foreach ($views as $view) {
      foreach ($view->display as $display => $data) {
        $view
          ->set_display($display);
        if ($data->display_plugin == 'openlayers' && $view->display_handler
          ->get_option('style_plugin') == 'openlayers_data') {
          $options[$view->name . '::' . $display] = $view->human_name . ': ' . $display;
        }
      }
    }
    $default = NULL;
    if (isset($this->data['views']['view']) && isset($this->data['views']['display'])) {
      $default = $this->data['views']['view'] . '::' . $this->data['views']['display'];
    }
    $form['views']['composite'] = array(
      '#type' => 'select',
      '#options' => $options,
      '#title' => 'View name',
      '#default_value' => isset($default) ? $default : '',
    );
    return $form;
  }
  function options_form_validate($form, &$form_state) {
    if (!empty($form_state['data']['views']['composite'])) {
      list($view, $display) = explode('::', $form_state['data']['views']['composite']);
      $form_state['data']['views']['view'] = $view;
      $form_state['data']['views']['display'] = $display;
      unset($form_state['data']['views']['composite']);
    }
    else {
      $field = $form_state['data']['layer_type'] . '][views][composite';
      form_set_error($field, t('A View must be set.'));
    }
  }

  /**
   * Get features for this view
   *
   * @param $view_name
   *   the view name
   * @param $display_name
   *   the view display name
   * @return
   *   array of features
   */
  function get_features() {
    if ($view = views_get_view($this->data['views']['view'])) {
      $args = array();

      // Retrieve args/filters from current view
      // to pass on to our vector layer.
      $current_view = views_get_current_view();
      if (!empty($current_view)) {
        $args = $current_view->args;
        if (isset($current_view->exposed_input)) {
          $view
            ->set_exposed_input($current_view->exposed_input);
        }
      }
      if (isset($this->data['views']['arguments'])) {
        $args = $this->data['views']['arguments'];
      }
      $features = $view
        ->execute_display($this->data['views']['display'], $args);

      // Get dynamic title from view
      $this->title = $view
        ->get_title();
      $view
        ->destroy();
    }
    $this->data['features'] = isset($features) ? $features : array();
    return $this->data['features'];
  }

  /**
   * Render.
   */
  function render(&$map) {
    drupal_add_js(drupal_get_path('module', 'openlayers_views') . '/plugins/layer_types/openlayers_views_vector.js');
    $this
      ->get_features();
  }

}

Members

Namesort descending Modifiers Type Description Overrides
openlayers_layer_type::$data public property Stores the options for this layer.
openlayers_layer_type::$map public property Stores the current map.
openlayers_layer_type::getProjections public function
openlayers_layer_type::options_form_submit function Submit the options_form(). 6
openlayers_layer_type::settings_form function Options form to configure layer-type-wide options. 3
openlayers_layer_type::__construct function Set configuration and store map.
openlayers_layer_type_openlayers_views_vector::get_features function Get features for this view
openlayers_layer_type_openlayers_views_vector::options_form function Options form which generates layers Overrides openlayers_layer_type::options_form
openlayers_layer_type_openlayers_views_vector::options_form_validate function Validate the options_form(). Overrides openlayers_layer_type::options_form_validate
openlayers_layer_type_openlayers_views_vector::options_init function Provide initial values for options. Overrides openlayers_layer_type::options_init
openlayers_layer_type_openlayers_views_vector::render function Render. Overrides openlayers_layer_type::render