From 0254a7b3503b01ff0318a0158e5e106a6593765e Mon Sep 17 00:00:00 2001
From: Christian Adamski <christian.adamski@googlemail.com>
Date: Sun, 9 Jun 2024 13:22:33 +0200
Subject: [PATCH] Issue #3447082 by drupalviking: Ajax error thrown if no
 providers are enabled

---
 .../GeolocationMapFormatterBase.php              | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/src/Plugin/Field/FieldFormatter/GeolocationMapFormatterBase.php b/src/Plugin/Field/FieldFormatter/GeolocationMapFormatterBase.php
index c043268d..20d95611 100644
--- a/src/Plugin/Field/FieldFormatter/GeolocationMapFormatterBase.php
+++ b/src/Plugin/Field/FieldFormatter/GeolocationMapFormatterBase.php
@@ -88,7 +88,6 @@ abstract class GeolocationMapFormatterBase extends FormatterBase {
       $container->get('plugin.manager.geolocation.mapprovider'),
       $container->get('plugin.manager.geolocation.mapcenter'),
       $container->get('plugin.manager.geolocation.dataprovider'),
-      $container->get('plugin.manager.geolocation.datalayerprovider'),
     );
   }
 
@@ -325,13 +324,26 @@ abstract class GeolocationMapFormatterBase extends FormatterBase {
       }
     }
 
-    return array_replace_recursive($summary, $this->mapProvider->getSettingsSummary($settings['map_provider_settings']));
+    if ($this->mapProvider ?? NULL) {
+      return array_replace_recursive($summary, $this->mapProvider->getSettingsSummary($settings['map_provider_settings']));
+    }
+
+    $summary[] = $this->t('Attention: No map provider set.');
+
+    \Drupal::messenger()->addWarning('Geolocation Formatter - Map: No map provider set. Map cannot be displayed.');
+
+    return $summary;
   }
 
   /**
    * {@inheritdoc}
    */
   public function viewElements(FieldItemListInterface $items, $langcode): array {
+    if (!($this->mapProvider ?? NULL)) {
+      \Drupal::logger('geolocation')->warning('No map provider set. No map can be displayed.');
+      return [];
+    }
+
     if ($items->count() == 0) {
       return [];
     }
-- 
GitLab