/**
  * {@inheritdoc}
  */
 public function viewElements(FieldItemListInterface $items, $langcode)
 {
     $elements = array();
     $geophp = \Drupal::service('geophp.geophp');
     $dumper = \Drupal::service('geocoder.dumper.' . $this->getSetting('dumper_plugin'));
     $provider_plugins = $this->getEnabledProviderPlugins();
     foreach ($items as $delta => $item) {
         /** @var \Geometry $geom */
         $geom = $geophp->load($item->value);
         $centroid = $geom->getCentroid();
         if ($addressCollection = Geocoder::reverse($provider_plugins, $centroid->y(), $centroid->x())) {
             $elements[$delta] = array('#markup' => $dumper->dump($addressCollection->first()));
         }
     }
     return $elements;
 }
 /**
  * {@inheritdoc}
  */
 public function viewElements(FieldItemListInterface $items, $langcode)
 {
     $elements = array();
     $dumper = \Drupal::service('geocoder.dumper.' . $this->getSetting('dumper_plugin'));
     foreach ($items as $delta => $item) {
         $value = $item->getValue();
         $address = array();
         $address[] = !empty($value['address_line1']) ? $value['address_line1'] : NULL;
         $address[] = !empty($value['address_line2']) ? $value['address_line2'] : NULL;
         $address[] = !empty($value['postal_code']) ? $value['postal_code'] : NULL;
         $address[] = !empty($value['locality']) ? $value['locality'] : NULL;
         $address[] = !empty($value['country']) ? $value['country'] : NULL;
         if ($addressCollection = Geocoder::geocode($this->getEnabledProviderPlugins(), implode(',', array_filter($address)))) {
             $elements[$delta] = array('#plain_text' => $dumper->dump($addressCollection->first()));
         }
     }
     return $elements;
 }
 /**
  * {@inheritdoc}
  */
 public function settingsSummary()
 {
     $summary = array();
     $available_fields = $this->getAvailableFields();
     $provider_plugin_ids = $this->getEnabledProviderPlugins();
     $delta_handling_options = $this->getDeltaHandling();
     $dumper_plugins = Geocoder::getPlugins('Dumper');
     $dumper_plugin = $this->getSetting('dumper_plugin');
     $field = $this->getSetting('field');
     $delta_handling = $this->getSetting('delta_handling');
     $mode = $this->getSetting('mode');
     if (!empty($available_fields[$field])) {
         $summary[] = $this->t('Field: @field', array('@field' => $available_fields[$field]));
     }
     if (!empty($provider_plugin_ids)) {
         $summary[] = t('Geocoder plugin(s): @plugin_ids', array('@plugin_ids' => implode(', ', $provider_plugin_ids)));
     }
     if (!empty($dumper_plugins[$dumper_plugin])) {
         $summary[] = t('Output format plugin: @format', array('@format' => $dumper_plugins[$dumper_plugin]));
     }
     if (!empty($delta_handling_options[$delta_handling])) {
         $summary[] = t('Delta handling: @delta', array('@delta' => $delta_handling_options[$delta_handling]));
     }
     return $summary;
 }
 /**
  * Get the list of enabled Provider plugins.
  *
  * @return array
  */
 public function getEnabledProviderPlugins()
 {
     $provider_plugin_ids = array();
     $geocoder_plugins = Geocoder::getPlugins('Provider');
     foreach ($this->getSetting('provider_plugins') as $plugin_id => $plugin) {
         if ($plugin['checked']) {
             $provider_plugin_ids[$plugin_id] = $geocoder_plugins[$plugin_id];
         }
     }
     return $provider_plugin_ids;
 }