diff --git a/lib/cartodb/controllers/named_maps.js b/lib/cartodb/controllers/named_maps.js index 41b9584e..590c3821 100644 --- a/lib/cartodb/controllers/named_maps.js +++ b/lib/cartodb/controllers/named_maps.js @@ -201,7 +201,6 @@ function numMapper(n) { } function decorateNamedMapProviderWithLayerVisibility (mamedMapProvider) { - var MapConfig = require('windshaft').model.MapConfig; var orginalGetMapConfig = mamedMapProvider.getMapConfig.bind(mamedMapProvider); mamedMapProvider.getMapConfig = function (callback) { @@ -220,15 +219,20 @@ function decorateNamedMapProviderWithLayerVisibility (mamedMapProvider) { return callback(err); } - var rawMapConfig = JSON.parse(JSON.stringify(mapConfig.obj())); + var layerVisibilityFilter = []; - rawMapConfig.layers = rawMapConfig.layers.filter(function (layer, index) { - return previewLayers[''+index] !== false && previewLayers[layer.id] !== false; + mapConfig.getLayers().forEach(function (layer, index) { + if (previewLayers[''+index] !== false && previewLayers[layer.id] !== false) { + layerVisibilityFilter.push(''+index); + } }); - var mapConfigWithVisibleLayers = new MapConfig.create(rawMapConfig); + if (layerVisibilityFilter.length) { + // overwrite 'all' default filter + rendererParams.layer = layerVisibilityFilter.join(','); + } - callback(null, mapConfigWithVisibleLayers, rendererParams, context); + callback(null, mapConfig, rendererParams, context); }); }); };