Improve styling in analysis layers
This commit is contained in:
@@ -11,6 +11,15 @@ function MapConfigAnalysisLayersAdapter(templateMaps) {
|
||||
|
||||
module.exports = MapConfigAnalysisLayersAdapter;
|
||||
|
||||
var SKIP_COLUMNS = {
|
||||
'the_geom': true,
|
||||
'the_geom_webmercator': true
|
||||
};
|
||||
|
||||
function skipColumns(columnNames) {
|
||||
return columnNames
|
||||
.filter(function(columnName) { return !SKIP_COLUMNS[columnName]; });
|
||||
}
|
||||
|
||||
var multitypeStyleTemplate = dot.template([
|
||||
"#points['mapnik::geometry_type'=1] {",
|
||||
@@ -31,7 +40,7 @@ var multitypeStyleTemplate = dot.template([
|
||||
"}",
|
||||
"#polygons['mapnik::geometry_type'=3] {",
|
||||
" polygon-fill: {{=it._color}};",
|
||||
" polygon-opacity: 0.7;",
|
||||
" polygon-opacity: {{=it._opacity}};",
|
||||
" line-color: #FFF;",
|
||||
" line-width: 0.5;",
|
||||
" line-opacity: {{=it._opacity}};",
|
||||
@@ -46,21 +55,36 @@ function multiTypeStyle(color, opacity) {
|
||||
}
|
||||
|
||||
var layerQueryTemplate = dot.template([
|
||||
'SELECT ST_Transform(the_geom, 3857) the_geom_webmercator',
|
||||
'SELECT ST_Transform(the_geom, 3857) the_geom_webmercator, {{=it._columns}}',
|
||||
'FROM ({{=it._query}}) _cdb_analysis_query'
|
||||
].join('\n'));
|
||||
|
||||
function getLayer(query, color, opacity) {
|
||||
function layerQuery(query, columnNames) {
|
||||
return layerQueryTemplate({ _query: query, _columns: skipColumns(columnNames).join(', ') });
|
||||
}
|
||||
|
||||
function getLayer(query, columnNames, color, opacity) {
|
||||
return {
|
||||
type: 'mapnik',
|
||||
options: {
|
||||
sql: layerQueryTemplate({ _query: query } ),
|
||||
sql: layerQuery(query, columnNames),
|
||||
cartocss: multiTypeStyle(color, opacity),
|
||||
cartocss_version: '2.3.0'
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
function getLayerWithStyle(query, columnNames, cartocss) {
|
||||
return {
|
||||
type: 'mapnik',
|
||||
options: {
|
||||
sql: layerQuery(query, columnNames),
|
||||
cartocss: cartocss,
|
||||
cartocss_version: '2.3.0'
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
MapConfigAnalysisLayersAdapter.prototype.getLayers = function(analysisConfiguration, requestMapConfig, callback) {
|
||||
|
||||
if (!Array.isArray(requestMapConfig.layers)) {
|
||||
@@ -79,11 +103,19 @@ MapConfigAnalysisLayersAdapter.prototype.getLayers = function(analysisConfigurat
|
||||
|
||||
var layers = [];
|
||||
|
||||
analysis.getSortedNodes().reverse().forEach(function(node) {
|
||||
layers.push(getLayer(node.getQuery(), 'grey', 0.2));
|
||||
analysis.getSortedNodes().reverse().forEach(function(node, i) {
|
||||
var layer = getLayer(node.getQuery(), node.getColumns(), '#333', 0.1 * i);
|
||||
if (!!node.params && !!node.params.cartocss) {
|
||||
layer = getLayerWithStyle(node.getQuery(), node.getColumns(), node.params.cartocss);
|
||||
}
|
||||
layers.push(layer);
|
||||
});
|
||||
|
||||
layers.push(getLayer(analysis.getQuery()));
|
||||
layers.push(getLayerWithStyle(
|
||||
analysis.getQuery(),
|
||||
analysis.getRoot().getColumns(),
|
||||
layer.options.cartocss
|
||||
));
|
||||
|
||||
return done(null, { layers: layers });
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user