Toytown Map turns OpenStreetMap into a friendly 3D toy town: every building becomes a little toy with a roof and windows, landmarks like churches, pubs and schools get their own low-poly models, and parks, pitches and racecourses are drawn too.
It’s built on toytown-gl, an open-source MapLibre plugin, and its CC0 model kit.
[toytown lat="52.1655" lng="-8.8265" size="1.5" skin="sitcom" height="480"]
lat, lng: the centre (required).size: the area shown, in km across (0.3 to 3.4; default 1.5).skin: one of default, night, sitcom, pastel, toybox, voxel, chunky, retro, neon, vintage, sketch, handdrawn, comic, blueprint, golden, autumn, winter, christmas, halloween, shamrock.height (px), zoom (13 to 19), pitch (tilt, 0 to 70), bearing (rotation).data: optional URL of a data file made with npx @toytown/cli build-data, for towns bigger than the browser builds.Map data © OpenStreetMap contributors, available under the Open Database Licence. The attribution is shown on every map.
The maps are drawn in your visitors’ browsers, which contact these services directly:
Like any web request, these services see the visitor’s IP address. No cookies are set and nothing is sent to the plugin author.
The plugin’s own PHP, JavaScript and CSS are not minified. The bundled libraries in public/vendor/ are minified builds; their source is:
toytown-gl.umd.js: toytown-gl, https://github.com/bpowerie25/Toytown (packages/core). Rebuild it, and this whole plugin, with pnpm install && pnpm --filter toytown-gl build && pnpm --filter @toytown/wordpress zip (see packages/wordpress/README.md).maplibre-gl*.mjs, maplibre-gl.css: MapLibre GL JS 6, https://github.com/maplibre/maplibre-gl-js (the unmodified dist/ files from the maplibre-gl npm package).The 3D models in public/models/ are generated by assets/generator/generate_models.py in the same repository.
The plugin’s code is MIT. Bundled libraries: toytown-gl (MIT), three.js (MIT), MapLibre GL JS (BSD-3-Clause). The 3D models are CC0.