/** * {@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; }