/* * L.TileLayer.Canvas is a class that you can use as a base for creating * dynamically drawn Canvas-based tile layers. */ L.TileLayer.Canvas = L.TileLayer.extend({ options: { async: false }, initialize: function (options) { L.setOptions(this, options); }, redraw: function () { if (this._map) { this._reset({hard: true}); this._update(); } for (var i in this._tiles) { this._redrawTile(this._tiles[i]); } return this; }, _redrawTile: function (tile) { this.drawTile(tile, tile._tilePoint, this._map._zoom); }, _createTile: function () { var tile = L.DomUtil.create('canvas', 'leaflet-tile'); tile.width = tile.height = this.options.tileSize; tile.onselectstart = tile.onmousemove = L.Util.falseFn; return tile; }, _loadTile: function (tile, tilePoint) { tile._layer = this; tile._tilePoint = tilePoint; this._redrawTile(tile); if (!this.options.async) { this.tileDrawn(tile); } }, drawTile: function (/*tile, tilePoint*/) { // override with rendering code }, tileDrawn: function (tile) { this._tileOnLoad.call(tile); } }); L.tileLayer.canvas = function (options) { return new L.TileLayer.Canvas(options); };