view = {
const origin = vl.selectPoint().fields('origin')
.on('mouseover').nearest(true);
const points = vl.markCircle()
.data('https://observablehq.com/d/b39b8c7400076b8c#vis_airports1')
.transform(
vl.groupby('origin').aggregate(vl.count().as('routes')),
vl.lookup('origin').from(foreign.fields('country', 'latitude', 'longitude')),
)
.select(origin)
.encode(
vl.latitude().fieldQ('latitude'),
vl.longitude().fieldQ('longitude'),
vl.size().fieldQ('routes').scale({range: [0, 1000]}).legend(null),
vl.order().fieldQ('routes').sort('descending')
);
return vl.layer(points)
.project(vl.projection('equalEarth'))
.width(900).height(500)
.config({view: {stroke: null}})
.render();
}