You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

44 lines
1.6 KiB

<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
#[Route('/map')]
class MapController extends AbstractController
{
// Produit le contenu de la popup (quand on clique sur un tracé issu d’overpass)
#[Route('/popup', name: 'app_map_popup')]
public function popup(Request $request): Response
{
// Grosso modo, on récuère les données de la feature correspondante
// Cf `assets/controllers/map_controller.js`
$element = json_decode($request->query->get('element'), true);
$josmCommands = [
'imagery' => [
'id' => 'osmfr',
],
];
// TODO dans le cas d’un nœud il n’y a pas de bounds mais on doit
// pouvoir trouver les coins d’une bbox autour sans trop de difficultés
if (isset($element['bounds'])) {
$josmCommands['load_and_zoom'] = [
'bottom' => $element['bounds']['minlat'],
'top' => $element['bounds']['maxlat'],
'left' => $element['bounds']['minlon'],
'right' => $element['bounds']['maxlon'],
'select' => sprintf('%s%d', $element['type'], $element['id']),
];
}
return $this->render('partials/_overpass-element-popup.html.twig', [
'element' => $element,
'josmCommands' => json_encode($josmCommands),
]);
}
}