@@ -89,7 +89,7 @@ public function geocodeQuery(GeocodeQuery $query): Collection
8989 }
9090
9191 $ language = '' ;
92- if (!is_null ($ query ->getLocale ()) && preg_match ('/^(fr|nl).*$/ ' , $ query ->getLocale (), $ matches ) === 1 ) {
92+ if (!is_null ($ query ->getLocale ()) && preg_match ('/^(fr|nl|de ).*$/ ' , $ query ->getLocale (), $ matches ) === 1 ) {
9393 $ language = $ matches [1 ];
9494 }
9595
@@ -114,18 +114,22 @@ public function geocodeQuery(GeocodeQuery $query): Collection
114114 foreach ($ json ->features as $ feature ) {
115115 $ components_fr = self ::extractComponents ($ feature ->properties ->components , 'fr ' );
116116 $ components_nl = self ::extractComponents ($ feature ->properties ->components , 'nl ' );
117+ $ components_de = self ::extractComponents ($ feature ->properties ->components , 'de ' );
117118
118119 $ coordinates = $ feature ->geometry ->coordinates ;
119120
120121 $ address_fr = self ::buildAddress ($ this ->getName (), $ components_fr , $ coordinates );
121122 $ address_nl = self ::buildAddress ($ this ->getName (), $ components_nl , $ coordinates );
123+ $ address_de = self ::buildAddress ($ this ->getName (), $ components_de , $ coordinates );
122124
123125 switch ($ language ) {
124126 case 'fr ' :
125127 if (!is_null ($ address_fr ->getStreetName ())) {
126128 $ results [] = $ address_fr ;
127129 } elseif (!is_null ($ address_nl ->getStreetName ())) {
128130 $ results [] = $ address_nl ;
131+ } elseif (!is_null ($ address_de ->getStreetName ())) {
132+ $ results [] = $ address_de ;
129133 }
130134 break ;
131135
@@ -134,6 +138,18 @@ public function geocodeQuery(GeocodeQuery $query): Collection
134138 $ results [] = $ address_nl ;
135139 } elseif (!is_null ($ address_fr ->getStreetName ())) {
136140 $ results [] = $ address_fr ;
141+ } elseif (!is_null ($ address_de ->getStreetName ())) {
142+ $ results [] = $ address_de ;
143+ }
144+ break ;
145+
146+ case 'de ' :
147+ if (!is_null ($ address_de ->getStreetName ())) {
148+ $ results [] = $ address_de ;
149+ } elseif (!is_null ($ address_fr ->getStreetName ())) {
150+ $ results [] = $ address_fr ;
151+ } elseif (!is_null ($ address_nl ->getStreetName ())) {
152+ $ results [] = $ address_nl ;
137153 }
138154 break ;
139155
@@ -144,6 +160,9 @@ public function geocodeQuery(GeocodeQuery $query): Collection
144160 if (!is_null ($ address_nl ->getStreetName ())) {
145161 $ results [] = $ address_nl ;
146162 }
163+ if (!is_null ($ address_de ->getStreetName ())) {
164+ $ results [] = $ address_de ;
165+ }
147166 break ;
148167 }
149168 }
@@ -380,6 +399,36 @@ private static function extractComponents(array $components, string $language) :
380399 break ;
381400 }
382401 }
402+ } else if ($ language === 'de ' ) {
403+ foreach ($ components as $ component ) {
404+ switch ($ component ->type ) {
405+ case 'country ' :
406+ $ country = $ component ->name_de ;
407+ $ countryCode = $ component ->id ;
408+ break ;
409+ case 'locality ' :
410+ $ locality = $ component ->name_fr ?? $ component ->name_nl ;
411+ break ;
412+ case 'municipality ' :
413+ $ municipality = $ component ->name_fr ?? $ component ->name_nl ;
414+ break ;
415+ case 'postal_code ' :
416+ $ postalCode = (string ) $ component ->id ;
417+ break ;
418+ case 'province ' :
419+ $ province = $ component ->name_fr ?? $ component ->name_nl ;
420+ break ;
421+ case 'region ' :
422+ $ region = $ component ->name_fr ?? $ component ->name_nl ;
423+ break ;
424+ case 'street ' :
425+ $ street = $ component ->name_de ;
426+ break ;
427+ case 'street_number ' :
428+ $ streetNumber = (string ) $ component ->name_fr ?? $ component ->name_nl ;
429+ break ;
430+ }
431+ }
383432 }
384433
385434 return [
0 commit comments