layered_map = {
const places_circles = vl.markCircle({size: 20}).data(places_selection.features).encode(
vl.longitude().fieldQ('geometry.coordinates[0]'),
vl.latitude().fieldQ('geometry.coordinates[1]')
);
const places_text = vl.markText({dy:-10}).data(places_selection.features).encode(
vl.longitude().fieldQ('geometry.coordinates[0]'),
vl.latitude().fieldQ('geometry.coordinates[1]'),
vl.text().fieldN('properties.name')
);
const counties = vl.markGeoshape({fill: color2, stroke: 'white'})
.data([counties_selection]);
const country_boundaries_national = vl.markGeoshape({stroke: 'lightgray', strokeDash: [2,2], fill: null})
.data([britain_country_boundaries]);
const regions = vl.markGeoshape({fill: 'url(#pattern_QWGSkB)', stroke:color, strokeWidth: 0.5})
.data([regions_selection]);
const countries_labels = vl.markText({fill:color})
.data(britain_countries.features).encode(
vl.text().fieldN('properties.name')
);
const boundaries = vl.markGeoshape({fill: 'white'})
.data(britain_countries.features);
const boundaries_blur = vl.markGeoshape({stroke: 'black', strokeWidth:2, fill: null})
.data(britain_countries.features);
return vl.layer(boundaries_blur, boundaries, country_boundaries_national, counties, regions, countries_labels, places_circles, places_text)
.project(vl.projection('mercator').scale(2900).translate(500, 3905))
.height(1000)
.width(900)
.view({'stroke': 'transparent'})
.render({renderer: 'svg'});
}