geolocation-8.x-3.x-dev/modules/geolocation_search_api/src/Plugin/search_api/data_type/GeolocationCoordinates.php

modules/geolocation_search_api/src/Plugin/search_api/data_type/GeolocationCoordinates.php
<?php

namespace Drupal\geolocation_search_api\Plugin\search_api\data_type;

use Drupal\search_api\DataType\DataTypePluginBase;

/**
 * Provides the location data type.
 *
 * @SearchApiDataType(
 *   id = "geolocation_coordinates",
 *   label = @Translation("Geolocation Coordinates"),
 *   description = @Translation("Location data type implementation"),
 *   prefix = "loc"
 * )
 */
class GeolocationCoordinates extends DataTypePluginBase {

  /**
   * {@inheritdoc}
   */
  public function getValue($value) {
    if ($geojson = json_decode($value, TRUE)) {
      if ($geojson['type'] === 'Point') {
        return $geojson['coordinates'][1] . ',' . $geojson['coordinates'][0];
      }

      return NULL;
    }

    $parts = explode(',', $value);

    if (count($parts) !== 2) {
      return NULL;
    }

    if (
      !is_numeric($parts[0])
      || !is_numeric($parts[1])
    ) {
      return NULL;
    }

    return (float) $parts[0] . ',' . (float) $parts[1];

  }

}

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

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