Canvas Tiles

layers2 openstreetmap21 canvas6

Renders tiles with coordinates for debugging.

The black grid tiles are generated on the client with an HTML5 canvas. The displayed tile coordinates are the XYZ tile coordinates.

import 'ol/ol.css';
import Map from 'ol/Map';
import TileLayer from 'ol/layer/Tile';
import View from 'ol/View';
import {OSM, TileDebug} from 'ol/source';

const map = new Map({
  layers: [
    new TileLayer({
      source: new OSM(),
    new TileLayer({
      source: new TileDebug(),
  target: 'map',
  view: new View({
    center: [0, 0],
    zoom: 1,
<!DOCTYPE html>
<html lang="en">
    <meta charset="UTF-8">
    <title>Canvas Tiles</title>
    <!-- Pointer events polyfill for old browsers, see https://caniuse.com/#feat=pointer -->
    <script src="https://unpkg.com/[email protected]/dist/elm-pep.js"></script>
    <!-- The lines below are only needed for old environments like Internet Explorer and Android 4.x -->
    <script src="https://cdn.polyfill.io/v3/polyfill.min.js?features=fetch,requestAnimationFrame,Element.prototype.classList,TextDecoder"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/core-js/3.18.3/minified.js"></script>
      .map {
        width: 100%;
    <div id="map" class="map"></div>
    <script src="main.js"></script>
  "name": "canvas-tiles",
  "dependencies": {
    "ol": "6.14.1"
  "devDependencies": {
    "parcel": "^2.0.0"
  "scripts": {
    "start": "parcel index.html",
    "build": "parcel build --public-url . index.html"