geolocation-8.x-3.x-dev/modules/geolocation_geometry/src/Plugin/geolocation/Location/GeometryViewsProximityFilter.php
modules/geolocation_geometry/src/Plugin/geolocation/Location/GeometryViewsProximityFilter.php
<?php
namespace Drupal\geolocation_geometry\Plugin\geolocation\Location;
use Drupal\geolocation\Attribute\Location;
use Drupal\geolocation\Plugin\geolocation\Location\ViewsProximityFilter;
/**
* Derive center from proximity filter.
*/
#[Location(
id: 'geometry_views_proximity_filter',
name: new \Drupal\Core\StringTranslation\TranslatableMarkup('Geometry Proximity filter'),
description: new \Drupal\Core\StringTranslation\TranslatableMarkup('Set map center from geometry proximity filter.')
)]
class GeometryViewsProximityFilter extends ViewsProximityFilter {
/**
* {@inheritdoc}
*/
public function getAvailableLocationOptions(array $context = []): array {
$options = [];
if ($context['views_filter'] ?? FALSE) {
return $options;
}
if ($displayHandler = self::getViewsDisplayHandler($context)) {
/** @var \Drupal\views\Plugin\views\filter\FilterPluginBase $filter */
foreach ($displayHandler->getHandlers('filter') as $delta => $filter) {
if (
$filter->getPluginId() === 'geolocation_geometry_filter_proximity'
&& $filter !== $context['views_filter']
) {
$options[$delta] = $this->t('Geo Proximity filter') . ' - ' . $filter->adminLabel();
}
}
}
return $options;
}
}
