/**
  * {@inheritdoc}.
  */
 public function query()
 {
     $this->ensureMyTable();
     $lat_alias = $this->tableAlias . '.' . $this->definition['field_name'] . '_lat';
     $lon_alias = $this->tableAlias . '.' . $this->definition['field_name'] . '_lon';
     $proximityPlugin = geofield_proximity_load_plugin($this->options['source']);
     $options = $proximityPlugin->getSourceValue($this);
     if ($options != FALSE) {
         $haversine_options = array('origin_latitude' => $options['latitude'], 'origin_longitude' => $options['longitude'], 'destination_latitude' => $lat_alias, 'destination_longitude' => $lon_alias, 'earth_radius' => $this->options['radius_of_earth']);
         $this->field_alias = $this->query->add_field(NULL, geofield_haversine($haversine_options), $this->tableAlias . '_' . $this->field);
     }
 }
 protected function valueValidate($form, &$form_state)
 {
     parent::valueValidate($form, $form_state);
     $proximityPlugin = geofield_proximity_load_plugin($form_state['values']['options']['source']);
     $proximityPlugin->value_validate($form, $form_state, $this);
 }
 function validateOptionsForm(&$form, FormStateInterface $form_state)
 {
     $proximityPlugin = geofield_proximity_load_plugin($form_state['values']['options']['source']);
     $proximityPlugin->options_validate($form, $form_state, $this);
 }