SVGmap Open SVGmap

About SVGmap

SVGmap makes SVG maps of any city from OpenStreetMap data. Pick a place and a size, and it gives you a file that's ready for a laser cutter, pen plotter or printer. It's free and everything runs in your browser.

Framing central Paris on the map in SVGmap
The frame on the map shows the whole piece, including the border and title.

Features

Controls

The white frame on the map is the capture area. Drag the map to look around, scroll to zoom and right-drag to rotate the view. On a phone, pinch to zoom and twist to rotate. Drag the white frame to move the capture, a corner or side handle to resize it and the round handle above it to turn it. Hold Shift while turning to snap to 15°. Click Fit capture to bring the whole frame back into view.

Click the lock next to the scale to keep it fixed. The handles then resize the piece itself instead of changing the scale, so the map shows more or less ground.

Click Generate to build the SVG. The preview updates as you change settings. Scroll or pinch to zoom the preview and drag to move it. Double-click it or click Fit to see the whole piece again. Click Download SVG to save the file, or Share to copy a link with your settings.

Click the title on the map or in the preview to drag it somewhere else, or drag its handles to resize it. Use Ctrl+Z to undo a change and Ctrl+Y to redo it.

Laser preview of downtown Chicago on a 5 by 7 inch plaque
Downtown Chicago in laser mode on a 5 × 7 in plaque.

How It Works

SVGmap downloads OpenStreetMap vector tiles from OpenFreeMap for the area inside the frame. A city center at the default scale needs 4 to 12 tiles. The tiles are decoded in a web worker and clipped to the shape of the piece. Roads and paths go through the line cleanup, which started out in my Blender add-on. Then each layer is merged and written out as an SVG.

With Add missing buildings from Overture on under Map data, it also reads the building footprints Overture Maps has and OpenStreetMap doesn't, straight from Overture's GeoParquet files. Most of them are Microsoft's and Google's machine-learning footprints. Any that mostly overlap a building already in the tiles are skipped, and the rest are drawn like any other building.

Imported routes skip the line cleanup and are drawn as they were recorded. Instead, every street, path and area closer to the route than the gap is cut back, so nothing gets scored again inside an engraved band.

There's no server doing the work. Tiles and decoded geometry are kept between renders, so changing a setting doesn't download anything again.

Only SVG export is supported for now. The source and more details are on GitHub.