address_suggestion-1.0.3/src/Plugin/AddressProvider/MapQuest.php

src/Plugin/AddressProvider/MapQuest.php
<?php

namespace Drupal\address_suggestion\Plugin\AddressProvider;

use Drupal\address_suggestion\AddressProviderBase;
use Drupal\Component\Serialization\Json;

/**
 * Defines a Map Quest plugin for address_suggestion.
 *
 * @package Drupal\address_suggestion\Plugin\AddressProvider
 *
 * @AddressProvider(
 *   id = "map_quest",
 *   label = @Translation("Map Quest api"),
 *   api = "https://www.mapquestapi.com/geocoding/v1/address",
 * )
 */
class MapQuest extends AddressProviderBase {

  /**
   * {@inheritDoc}
   */
  public function processQuery($string, $settings) {
    $results = [];

    $url = !empty($settings['endpoint']) ? $settings['endpoint'] : $settings['api'];
    if (empty($string) && empty($settings['api_key'])) {
      return $results;
    }
    $query = [
      'key' => $settings['api_key'],
      'location' => $string,
      'c' => $this->languageManager->getCurrentLanguage()->getId(),
    ];
    if (!empty($settings['countryName'])) {
      $query['location'] .= ' ' . $settings['countryName'];
    }
    $response = $this->client->request('GET', $url, [
      'query' => $query,
    ]);

    $content = Json::decode($response->getBody());

    if (empty($content["results"])) {
      return $results;
    }
    if (!empty($content['results'][0]['locations'])) {
      foreach ($content["results"][0]["locations"] as $key => $component) {
        $results[$key]["street_name"] = $component["street"] ?? '';
        $results[$key]["town_name"] = $component["adminArea5"] ?? '';
        $results[$key]["administrative_area"] = $component["adminArea4"] ?? '';
        $results[$key]["zip_code"] = $component["postalCode"] ?? '';
        $results[$key]["country_code"] = $component["adminArea1"] ?? $settings['country'];
        $results[$key]["value"] = $results[$key]["label"] = implode(' ', [
          $component["street"],
          $component["postalCode"],
          $component["adminArea5"],
        ]);
        if (!empty($component['latLng'])) {
          $results[$key]['location'] = [
            'longitude' => $component['latLng']['lng'],
            'latitude' => $component['latLng']['lat'],
          ];
        }
      }
    }

    return $results;
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc