You are here

class GeoJSON in Openlayers 7.3

Class GeoJSON.

Plugin annotation


@OpenlayersPlugin(
 id = "GeoJSON"
)

Hierarchy

Expanded class hierarchy of GeoJSON

2 string references to 'GeoJSON'
GeofieldWidget::optionsForm in modules/openlayers_geofield/src/Plugin/Component/GeofieldWidget/GeofieldWidget.php
@TODO What is this return? If it is the form, why is form by reference?
GeofieldWidget::postBuild in modules/openlayers_geofield/src/Plugin/Component/GeofieldWidget/GeofieldWidget.php
Invoked after an objects render array is built.

File

src/Plugin/Source/GeoJSON/GeoJSON.php, line 19
Source: GeoJson.

Namespace

Drupal\openlayers\Plugin\Source\GeoJSON
View source
class GeoJSON extends Source {

  /**
   * {@inheritdoc}
   */
  public function optionsForm(array &$form, array &$form_state) {
    $form['options']['url'] = array(
      '#title' => t('URL'),
      '#type' => 'textfield',
      '#maxlength' => '256',
      '#default_value' => $this
        ->getOption('url'),
    );
    $form['options']['useBBOX'] = array(
      '#type' => 'checkbox',
      '#title' => t('Use Bounding Box Strategy'),
      '#description' => t('Bounding Box strategy will add a query string onto the GeoJSON URL, which means that only data in the viewport of the map will be loaded.  This can be helpful if you have lots of data coming from the feed.'),
      '#default_value' => $this
        ->getOption('useBBOX'),
    );
    $form['options']['paramForwarding'] = array(
      '#type' => 'checkbox',
      '#title' => t('Forward parameters on bbox load'),
      '#description' => t('If enabled all GET request parameters will be forwarded when loading the bbox content.'),
      '#default_value' => $this
        ->getOption('paramForwarding', TRUE),
      '#states' => array(
        'invisible' => array(
          ':input[name="options[useBBOX]"]' => array(
            'checked' => FALSE,
          ),
        ),
      ),
    );
    $form['options']['reloadOnZoomChange'] = array(
      '#type' => 'checkbox',
      '#title' => t('Reload features on zoom change.'),
      '#description' => t('Reload the features if the zoom level of the map changes. Handy if you use a zoom aware backend clustering.'),
      '#default_value' => $this
        ->getOption('reloadOnZoomChange'),
    );
    $form['options']['reloadOnExtentChange'] = array(
      '#type' => 'checkbox',
      '#title' => t('Reload features on extent change'),
      '#description' => t('Reload the features if the visible part of the map changes (e.g. by dragging the map).'),
      '#default_value' => $this
        ->getOption('reloadOnExtentChange'),
    );
    $form['options']['geojson_data'] = array(
      '#type' => 'textarea',
      '#title' => t('GeoJSON Data'),
      '#description' => t('Paste raw GeoJSON data here. It is better to use a URL.  This is provided for very simple use cases like one or two features.  If there is data here, it will override the URL above.'),
      '#default_value' => $this
        ->getOption('geojson_data'),
      '#states' => array(
        'invisible' => array(
          ':input[name="options[useBBOX]"]' => array(
            'checked' => TRUE,
          ),
        ),
      ),
    );
    $form['options']['devMode'] = array(
      '#type' => 'checkbox',
      '#title' => t('Enable developer mode.'),
      '#description' => t('If enabled you can edit the request to send using a dialog.'),
      '#default_value' => $this
        ->getOption('devMode'),
    );
  }

  /**
   * {@inheritdoc}
   */
  public function getJS() {
    $js = parent::getJS();

    // Ensure we've a sane url.
    if (!empty($js['opt']['url'])) {
      $js['opt']['url'] = url($js['opt']['url']);
    }
    else {

      // Remove the option as it is even used if empty.
      unset($js['opt']['url']);
    }

    // @TODO Find a way how to do this just once per map / collection.
    if ($this
      ->getOption('devMode')) {
      include 'forms.inc';
      $form_state = array();
      $form_state['build_info']['args'] = array(
        $this,
      );
      $form = drupal_build_form('openlayers_dev_dialog_form', $form_state);
      unset($form['options']['devMode']);
      $js['opt']['devDialog'] = filter_xss(drupal_render($form), array(
        'label',
        'form',
        'input',
        'select',
        'textarea',
        'div',
        'ul',
        'ol',
        'li',
        'dl',
        'dt',
        'dd',
      ));
    }
    return $js;
  }

  /**
   * {@inheritdoc}
   */
  public function attached() {
    $attached = parent::attached();
    $plugin = $this
      ->getPluginDefinition();
    $plugin['path'] = $this
      ->getClassDirectory();
    if ($this
      ->getOption('devMode')) {

      // @TODO Find a way how to do this just once per map / collection.
      $attached['library']['system.ui.dialog'] = array(
        'system',
        'ui.dialog',
      );
      $attached['library']['system.jquery.cookie'] = array(
        'system',
        'jquery.cookie',
      );
      $attached['js'][$plugin['path'] . '/js/geojson_dev.js']['weight'] = Config::get('openlayers.js_css.weight') + 1;
    }
    else {
      unset($attached['js'][$plugin['path'] . '/js/geojson_dev.js']);
      unset($attached['css'][$plugin['path'] . '/css/geojson_dev.css']);
    }
    return $attached;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
Base::$attached protected property Holds all the attachment used by this object. 6
Base::$collection protected property Holds the Collection object.
Base::$id protected property A unique ID for the object.
Base::addObject public function Add an object into the collection of the parent object. Overrides ObjectInterface::addObject
Base::clearOption public function Remove an option. Overrides ObjectInterface::clearOption
Base::dependencies public function Defines dependencies. Overrides ObjectInterface::dependencies 3
Base::getClassDirectory public function Returns the path to the plugin directory. Overrides ObjectInterface::getClassDirectory
Base::getClassPath public function Returns the path to the class file. Overrides ObjectInterface::getClassPath
Base::getCollection public function Return the Collection object linked to the object. Overrides ObjectInterface::getCollection
Base::getConfiguration public function Return the object configuration. Overrides ObjectInterface::getConfiguration
Base::getDependencies public function Return all the dependencies objects of the parent object. Overrides ObjectInterface::getDependencies
Base::getDescription public function Return the description of the object. Overrides ObjectInterface::getDescription
Base::getExport public function Return an object, CTools Exportable. Overrides ObjectInterface::getExport
Base::getFactoryService public function Return the Factory Service of the object. Overrides ObjectInterface::getFactoryService
Base::getId public function Return the object unique ID. Overrides ObjectInterface::getId
Base::getMachineName public function Return the unique machine name of the object. Overrides ObjectInterface::getMachineName
Base::getName public function Return the human name of the object. Overrides ObjectInterface::getName
Base::getObjects public function Return an array of OL objects indexed by their type. Overrides ObjectInterface::getObjects
Base::getOption public function Returns an option. Overrides ObjectInterface::getOption
Base::getOptions public function Return the options array. Overrides ObjectInterface::getOptions
Base::getParents public function Returns an array with the maps this object is attached on. Overrides ObjectInterface::getParents
Base::getPluginDescription public function Return the description of the object's plugin. Overrides ObjectInterface::getPluginDescription
Base::getProvider public function Return the module that provides this plugin. Overrides ObjectInterface::getProvider
Base::getType public function The type of this object. Overrides ObjectInterface::getType
Base::getWeight public function Get the weight of an object. Overrides ObjectInterface::getWeight
Base::i18nStringsRefresh public function Refresh string translations. Overrides ObjectInterface::i18nStringsRefresh 1
Base::init public function Initializes the object. Overrides ObjectInterface::init 2
Base::initCollection public function Initializes the Collection, Import objects from options, Import the current object. Overrides ObjectInterface::initCollection
Base::isAsynchronous public function Whether or not this object has to be processed asynchronously. Overrides ObjectInterface::isAsynchronous 3
Base::optionsFormSubmit public function Submit callback for the options form. Overrides ObjectInterface::optionsFormSubmit 11
Base::optionsFormValidate public function Validation callback for the options form. Overrides ObjectInterface::optionsFormValidate
Base::optionsToObjects public function Return a flat array containing Openlayers Objects from the options array. Overrides ObjectInterface::optionsToObjects 9
Base::postBuild public function Invoked after an objects render array is built. Overrides ObjectInterface::postBuild 13
Base::preBuild public function Invoked before an objects render array is built. Overrides ObjectInterface::preBuild 4
Base::removeObject public function Remove an object from the collection. Overrides ObjectInterface::removeObject
Base::resetCollection public function Reset the object's Collection. Overrides ObjectInterface::resetCollection
Base::setFactoryService public function Set the Factory Service of the object. Overrides ObjectInterface::setFactoryService
Base::setId public function Set the object ID. Overrides ObjectInterface::setId
Base::setOption public function Set an option. Overrides ObjectInterface::setOption
Base::setOptions public function Set the options array. Overrides ObjectInterface::setOptions
Base::setWeight public function Set the weight of an object. Overrides ObjectInterface::setWeight
GeoJSON::attached public function Returns a list of attachments for building the render array. Overrides Base::attached
GeoJSON::getJS public function !Attention! This function will remove any option that is named after a plugin type e.g.: layers, controls, styles, interactions, components . Overrides Base::getJS
GeoJSON::optionsForm public function @TODO What is this return? If it is the form, why is form by reference? Overrides Base::optionsForm
Source::$options protected property The array containing the options. Overrides Base::$options