geolocation-8.x-3.x-dev/modules/geolocation_geometry/src/Plugin/geolocation/MapCenter/GeometryViewsBoundaryFilter.php
modules/geolocation_geometry/src/Plugin/geolocation/MapCenter/GeometryViewsBoundaryFilter.php
<?php
namespace Drupal\geolocation_geometry\Plugin\geolocation\MapCenter;
use Drupal\geolocation\Attribute\MapCenter;
use Drupal\geolocation\Plugin\geolocation\MapCenter\ViewsBoundaryFilter;
/**
* Derive center from boundary filter.
*/
#[MapCenter(
id: 'geometry_views_boundary_filter',
name: new \Drupal\Core\StringTranslation\TranslatableMarkup('Geometry Boundary filter'),
description: new \Drupal\Core\StringTranslation\TranslatableMarkup('Fit map to geometry boundary filter.')
)]
class GeometryViewsBoundaryFilter extends ViewsBoundaryFilter {
/**
* {@inheritdoc}
*/
public function getAvailableMapCenterOptions(array $context = []): array {
$options = [];
if ($displayHandler = self::getViewsDisplayHandler($context)) {
/** @var \Drupal\views\Plugin\views\filter\FilterPluginBase $filter */
foreach ($displayHandler->getHandlers('filter') as $filter_id => $filter) {
if ($filter->getPluginId() === 'geolocation_geometry_filter_boundary') {
// Preserve compatibility to v1.
$options['boundary_filter_' . $filter_id] = $this->t('Geo Boundary filter') . ' - ' . $filter->adminLabel();
}
}
}
return $options;
}
}
