Files
iD/modules/svg/osm.js
2017-09-18 22:03:34 -04:00

62 lines
1.4 KiB
JavaScript

export function svgOsm(projection, context, dispatch) {
var enabled = true;
function drawOsm(selection) {
selection.selectAll('.layer-osm')
.data(['areas', 'lines', 'hit', 'halo', 'label'])
.enter()
.append('g')
.attr('class', function(d) { return 'layer-osm layer-' + d; });
}
function showLayer() {
var layer = context.surface().selectAll('.data-layer-osm');
layer.interrupt();
layer
.classed('disabled', false)
.style('opacity', 0)
.transition()
.duration(250)
.style('opacity', 1)
.on('end interrupt', function () {
dispatch.call('change');
});
}
function hideLayer() {
var layer = context.surface().selectAll('.data-layer-osm');
layer.interrupt();
layer
.transition()
.duration(250)
.style('opacity', 0)
.on('end interrupt', function () {
layer.classed('disabled', true);
dispatch.call('change');
});
}
drawOsm.enabled = function(_) {
if (!arguments.length) return enabled;
enabled = _;
if (enabled) {
showLayer();
} else {
hideLayer();
}
dispatch.call('change');
return this;
};
return drawOsm;
}