@@ -221,24 +221,27 @@ void mapcache_tileset_get_map_tiles(mapcache_context *ctx, mapcache_tileset *til
221221 resolution = mapcache_grid_get_resolution (bbox , width , height );
222222 * effectively_used_grid_link = mapcache_grid_get_closest_wms_level (ctx ,grid_link ,resolution ,& level );
223223
224- // Get dimensions values
224+ /* we don't want to assemble tiles that have already been reassembled from a lower level */
225+ if ((* effectively_used_grid_link )-> outofzoom_strategy == MAPCACHE_OUTOFZOOM_REASSEMBLE && level > (* effectively_used_grid_link )-> max_cached_zoom ) {
226+ level = (* effectively_used_grid_link )-> max_cached_zoom ;
227+ }
228+
229+ // Get dimensions values for whole map if required by <wms_single_query> configuration
225230 if (dimensions )
226231 {
227232 int j ;
228233 for (j = 0 ; j < dimensions -> nelts ; j ++ )
229234 {
230235 mapcache_requested_dimension * rdim = APR_ARRAY_IDX (dimensions ,j ,mapcache_requested_dimension * );
231- rdim -> cached_entries_for_value =
232- mapcache_dimension_get_entries_for_value (ctx ,rdim -> dimension ,rdim -> requested_value ,
233- tileset ,bbox ,(* effectively_used_grid_link )-> grid );
236+ mapcache_dimension * dim = rdim -> dimension ;
237+ if (dim -> wms_single_query_minzoom != -1 && level >= dim -> wms_single_query_minzoom ) {
238+ rdim -> cached_entries_for_value =
239+ mapcache_dimension_get_entries_for_value (ctx ,rdim -> dimension ,rdim -> requested_value ,
240+ tileset ,bbox ,(* effectively_used_grid_link )-> grid );
241+ }
234242 }
235243 }
236244
237- /* we don't want to assemble tiles that have already been reassembled from a lower level */
238- if ((* effectively_used_grid_link )-> outofzoom_strategy == MAPCACHE_OUTOFZOOM_REASSEMBLE && level > (* effectively_used_grid_link )-> max_cached_zoom ) {
239- level = (* effectively_used_grid_link )-> max_cached_zoom ;
240- }
241-
242245 mapcache_grid_get_xy (ctx ,(* effectively_used_grid_link )-> grid ,bbox -> minx ,bbox -> miny ,level ,& bl_x ,& bl_y );
243246 mapcache_grid_get_xy (ctx ,(* effectively_used_grid_link )-> grid ,bbox -> maxx ,bbox -> maxy ,level ,& tr_x ,& tr_y );
244247 Mx = MAPCACHE_MAX (MAPCACHE_MIN (MAPCACHE_MAX (tr_x ,bl_x ),(* effectively_used_grid_link )-> grid_limits [level ].maxx ),(* effectively_used_grid_link )-> grid_limits [level ].minx );
0 commit comments