env('MAP_RENDERER_URL', 'http://map-renderer:3000'), // Secondi concessi a un singolo rendering: comprende il download delle // tessere OSM non ancora in cache, che alla prima generazione può // richiedere qualche decina di secondi. // // Sta sotto `max_execution_time` (120s) di proposito: la generazione parte // da una richiesta web, e un limite piu' alto verrebbe comunque tagliato da // PHP con un errore fatale invece che dal messaggio gestito. 'renderer_timeout' => (int) env('MAP_RENDERER_TIMEOUT', 110), // Lato massimo (px) dell'immagine generata. // // Il numero non e' arbitrario: la piantina finisce su una pagina S-12, che // e' una cartolina da 146 x 94,4 mm, e ne occupa il 98%. A 600 dpi — il // massimo che una stampante da ufficio sfrutti davvero — il lato lungo e' // 143 mm / 25,4 * 600 = 3378 px. Oltre, i pixel finiscono nel file senza // arrivare sulla carta. 'max_side' => 3400, // Margine di contesto attorno al confine, in frazione del lato maggiore. 'margin_ratio' => 0.15, // Proporzioni dell'immagine: quelle della pagina S-12 (146 / 94,4 mm). // // Senza, un territorio quasi quadrato stampato su una pagina orizzontale // lascerebbe due fasce bianche larghe un quinto di foglio. Chiedendole al // renderer, l'immagine nasce gia' della forma giusta e riempie la pagina // mostrando piu' dintorni invece di carta vuota. 'aspetto' => 146 / 94.4, // Spessore del confine, in pixel dell'immagine finale. // // Deve dire dove passa il confine senza cancellare la via che ci corre // sotto: chi percorre il territorio quella via la deve leggere. Su 3400 px // stampati su 146 mm, 3 px sono circa un decimo di millimetro — un segno // netto e sottile. Semitrasparente per lo stesso motivo. 'tratto' => 3, 'tratto_opacita' => 0.85, // Formato dell'immagine. // // JPEG e non PNG: una mappa e' un'immagine fotografica (migliaia di tinte // fra edifici, verde e strade) e il PNG, che non perde niente, la porta a // 4-6 MB per territorio — con 274 territori sono diversi GB di volume, e // ogni PDF diventa lento da aprire. A qualita' 86 i nomi delle strade // restano leggibili e il file scende sotto il megabyte. 'formato' => env('MAP_RENDERER_FORMATO', 'jpeg'), 'qualita' => (int) env('MAP_RENDERER_QUALITA', 86), ];