You are here

public function MapRenderEventSubscriber::onMapRender in farmOS 2.x

Same name in this branch
  1. 2.x modules/asset/land/src/EventSubscriber/MapRenderEventSubscriber.php \Drupal\farm_land\EventSubscriber\MapRenderEventSubscriber::onMapRender()
  2. 2.x modules/asset/structure/src/EventSubscriber/MapRenderEventSubscriber.php \Drupal\farm_structure\EventSubscriber\MapRenderEventSubscriber::onMapRender()
  3. 2.x modules/core/map/src/EventSubscriber/MapRenderEventSubscriber.php \Drupal\farm_map\EventSubscriber\MapRenderEventSubscriber::onMapRender()
  4. 2.x modules/core/quantity/src/EventSubscriber/MapRenderEventSubscriber.php \Drupal\quantity\EventSubscriber\MapRenderEventSubscriber::onMapRender()
  5. 2.x modules/core/ui/map/src/EventSubscriber/MapRenderEventSubscriber.php \Drupal\farm_ui_map\EventSubscriber\MapRenderEventSubscriber::onMapRender()
  6. 2.x modules/core/map/modules/mapbox/src/EventSubscriber/MapRenderEventSubscriber.php \Drupal\farm_map_mapbox\EventSubscriber\MapRenderEventSubscriber::onMapRender()

React to the MapRenderEvent.

Parameters

\Drupal\farm_map\Event\MapRenderEvent $event: The MapRenderEvent.

File

modules/asset/structure/src/EventSubscriber/MapRenderEventSubscriber.php, line 61

Class

MapRenderEventSubscriber
An event subscriber for the MapRenderEvent.

Namespace

Drupal\farm_structure\EventSubscriber

Code

public function onMapRender(MapRenderEvent $event) {

  // Get the map ID.
  $map_id = $event
    ->getmapType()
    ->id();

  // Add structure type layers to dashboard map.
  if ($map_id == 'dashboard') {
    $layers = [];

    // Define the parent group.
    $group = $this
      ->t('Locations');

    // Create a layer group for the asset type.
    $layers['structure'] = [
      'group' => $group,
      'label' => $this->structureAssetType
        ->label(),
      'is_group' => TRUE,
    ];

    // Load structure types.
    $structure_types = FarmStructureType::loadMultiple();

    // Create a layer for each sub-type.
    foreach ($structure_types as $structure_type) {

      /** @var \Drupal\farm_map\Entity\LayerStyleInterface $layer_style */
      $conditions = [
        'asset_type' => 'structure',
        'structure_type' => $structure_type
          ->id(),
      ];
      $layer_style = $this->layerStyleLoader
        ->load($conditions);
      if (!empty($layer_style)) {
        $color = $layer_style
          ->get('color');
      }
      $layers['structure_' . $structure_type
        ->id()] = [
        'group' => $this->structureAssetType
          ->label(),
        'label' => $structure_type
          ->label(),
        'asset_type' => 'structure',
        'filters' => [
          'structure_type_value[]' => $structure_type
            ->id(),
        ],
        'color' => $color ?? 'orange',
        'zoom' => TRUE,
      ];
    }

    // Add layers to the map settings.
    $settings[$event
      ->getMapTargetId()]['asset_type_layers'] = $layers;
    $event
      ->addSettings($settings);
  }
}