← Back
Editing: GeoApiController.php
<?php namespace App\Controller\Api; use App\Service\GeoService; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Annotation\Route; #[Route(path: '/api/geo', name: 'api_geo_')] final class GeoApiController extends AbstractController { public function __construct(private readonly GeoService $geoService) { } #[Route(path: '/search', name: 'search', methods: ['POST'])] public function searchAddressAction(Request $request): JsonResponse { $content = json_decode($request->getContent()); $addresses = $this->geoService->getAddressesFromQuery($content->query); $formattedAddresses = []; $cnt = 0; foreach ($addresses->results as $result) { $formattedAddresses[] = [ 'label' => $result->formatted_address, 'lat' => $result->geometry->location->lat, 'lng' => $result->geometry->location->lng, ]; ++$cnt; if ($cnt >= 5) { break; } } return new JsonResponse($formattedAddresses); } #[Route(path: '/reverse/{lat}/{lng}', name: 'reverse')] public function reverseGeocodeAction(string $lat, string $lng): JsonResponse { $addresses = $this->geoService->getAddressesFromPosition($lat, $lng); $formattedAddresses = []; foreach ($addresses->results as $result) { $formattedAddresses[] = $result->formatted_address; } return new JsonResponse($formattedAddresses); } }
Save File
Cancel