@@ -220,7 +220,8 @@ imageObj *msDrawMap(mapObj *map, int querymap)
220
220
#if defined(USE_WMS_LYR ) || defined(USE_WFS_LYR )
221
221
enum MS_CONNECTION_TYPE lastconnectiontype ;
222
222
httpRequestObj * pasOWSReqInfo = NULL ;
223
- int numOWSLayers = 0 , numOWSRequests = 0 ;
223
+ int numOWSLayers = 0 ;
224
+ int numOWSRequests = 0 ;
224
225
wmsParamsObj sLastWMSParams ;
225
226
#endif
226
227
@@ -256,30 +257,43 @@ imageObj *msDrawMap(mapObj *map, int querymap)
256
257
*/
257
258
numOWSLayers = 0 ;
258
259
for (i = 0 ; i < map -> numlayers ; i ++ ) {
259
- if (map -> layerorder [i ] != -1 &&
260
- msLayerIsVisible (map , GET_LAYER (map ,map -> layerorder [i ])))
260
+ if (map -> layerorder [i ] == -1 )
261
+ continue ;
262
+
263
+ lp = GET_LAYER (map ,map -> layerorder [i ]);
264
+ if ( lp -> connectiontype != MS_WMS &&
265
+ lp -> connectiontype != MS_WFS ) {
266
+ continue ;
267
+ }
261
268
numOWSLayers ++ ;
262
269
}
263
270
264
-
265
271
if (numOWSLayers > 0 ) {
272
+
266
273
/* Alloc and init pasOWSReqInfo...
267
274
*/
268
- pasOWSReqInfo = (httpRequestObj * )malloc (( numOWSLayers + 1 ) * sizeof (httpRequestObj ));
275
+ pasOWSReqInfo = (httpRequestObj * )malloc (numOWSLayers * sizeof (httpRequestObj ));
269
276
if (pasOWSReqInfo == NULL ) {
270
277
msSetError (MS_MEMERR , "Allocation of httpRequestObj failed." , "msDrawMap()" );
271
278
return NULL ;
272
279
}
273
- msHTTPInitRequestObj (pasOWSReqInfo , numOWSLayers + 1 );
280
+ msHTTPInitRequestObj (pasOWSReqInfo , numOWSLayers );
274
281
msInitWmsParamsObj (& sLastWMSParams );
275
282
276
283
/* Pre-download all WMS/WFS layers in parallel before starting to draw map */
277
284
lastconnectiontype = MS_SHAPEFILE ;
278
- for (i = 0 ; numOWSLayers && i < map -> numlayers ; i ++ ) {
279
- if (map -> layerorder [i ] == -1 || ! msLayerIsVisible ( map , GET_LAYER ( map , map -> layerorder [ i ])) )
285
+ for (i = 0 ; i < map -> numlayers ; i ++ ) {
286
+ if (map -> layerorder [i ] == -1 )
280
287
continue ;
281
288
282
289
lp = GET_LAYER (map ,map -> layerorder [i ]);
290
+ if ( lp -> connectiontype != MS_WMS &&
291
+ lp -> connectiontype != MS_WFS ) {
292
+ continue ;
293
+ }
294
+
295
+ if ( !msLayerIsVisible (map , lp ) )
296
+ continue ;
283
297
284
298
#ifdef USE_WMS_LYR
285
299
if (lp -> connectiontype == MS_WMS ) {
@@ -306,9 +320,7 @@ imageObj *msDrawMap(mapObj *map, int querymap)
306
320
lastconnectiontype = lp -> connectiontype ;
307
321
}
308
322
309
- #ifdef USE_WMS_LYR
310
323
msFreeWmsParamsObj (& sLastWMSParams );
311
- #endif
312
324
} /* if numOWSLayers > 0 */
313
325
314
326
if (numOWSRequests && msOWSExecuteRequests (pasOWSReqInfo , numOWSRequests , map , MS_TRUE ) == MS_FAILURE ) {
0 commit comments