if(!HTMLCanvasElement.prototype.toBlob){Object.defineProperty(HTMLCanvasElement.prototype,"toBlob",{value:function(callback,type,quality){var dataURL=this.toDataURL(type,quality).split(",")[1];setTimeout(function(){var binStr=atob(dataURL),len=binStr.length,arr=new Uint8Array(len);for(var i=0;idata.timestamp+this.options.cacheMaxAge&&!this.options.useOnlyCache){console.log("Tile is too old: ",tileUrl);if(this.options.saveToCache){tile.onload=L.bind(this._saveTile,this,tile,tileUrl,data._revs_info[0].rev,done)}tile.crossOrigin="Anonymous";tile.src=tileUrl;tile.onerror=function(ev){this.src=url}}else{tile.onload=L.bind(this._tileOnLoad,this,done,tile);tile.src=url}}.bind(this))},_onCacheMiss:function(tile,tileUrl,done){this.fire("tilecachemiss",{tile:tile,url:tileUrl});if(this.options.useOnlyCache){tile.onload=L.Util.falseFn;tile.src=L.Util.emptyImageUrl}else{if(this.options.saveToCache){tile.onload=L.bind(this._saveTile,this,tile,tileUrl,undefined,done)}else{tile.onload=L.bind(this._tileOnLoad,this,done,tile)}tile.crossOrigin="Anonymous";tile.src=tileUrl}},_saveTile:function(tile,tileUrl,existingRevision,done){if(!this.options.saveToCache){return}var canvas=document.createElement("canvas");canvas.width=tile.naturalWidth||tile.width;canvas.height=tile.naturalHeight||tile.height;var context=canvas.getContext("2d");context.drawImage(tile,0,0);var format=this.options.cacheFormat;canvas.toBlob(function(blob){this._db.put({_id:tileUrl,_rev:existingRevision,timestamp:Date.now()}).then(function(status){return this._db.putAttachment(tileUrl,"tile",status.rev,blob,format)}.bind(this)).then(function(resp){if(done){done()}}).catch(function(){if(done){done()}})}.bind(this),format)},seed:function(bbox,minZoom,maxZoom){if(!this.options.useCache){return}if(minZoom>maxZoom){return}if(!this._map){return}var queue=[];for(var z=minZoom;z<=maxZoom;z+=1){var northEastPoint=this._map.project(bbox.getNorthEast(),z);var southWestPoint=this._map.project(bbox.getSouthWest(),z);var tileBounds=this._pxBoundsToTileRange(L.bounds([northEastPoint,southWestPoint]));for(var j=tileBounds.min.y;j<=tileBounds.max.y;j+=1){for(var i=tileBounds.min.x;i<=tileBounds.max.x;i+=1){var point=new L.Point(i,j);point.z=z;queue.push(this._getTileUrl(point))}}}var seedData={bbox:bbox,minZoom:minZoom,maxZoom:maxZoom,queueLength:queue.length};this.fire("seedstart",seedData);var tile=this._createTile();tile._layer=this;this._seedOneTile(tile,queue,seedData);return this},_createTile:function(){return document.createElement("img")},_getTileUrl:function(coords){var zoom=coords.z;if(this.options.zoomReverse){zoom=this.options.maxZoom-zoom}zoom+=this.options.zoomOffset;return L.Util.template(this._url,L.extend({r:this.options.detectRetina&&L.Browser.retina&&this.options.maxZoom>0?"@2x":"",s:this._getSubdomain(coords),x:coords.x,y:this.options.tms?this._globalTileRange.max.y-coords.y:coords.y,z:this.options.maxNativeZoom?Math.min(zoom,this.options.maxNativeZoom):zoom},this.options))},_seedOneTile:function(tile,remaining,seedData){if(!remaining.length){this.fire("seedend",seedData);return}this.fire("seedprogress",{bbox:seedData.bbox,minZoom:seedData.minZoom,maxZoom:seedData.maxZoom,queueLength:seedData.queueLength,remainingLength:remaining.length});var url=remaining.shift();this._db.get(url,function(err,data){if(!data){tile.onload=function(ev){this._saveTile(tile,url,null);this._seedOneTile(tile,remaining,seedData)}.bind(this);tile.crossOrigin="Anonymous";tile.src=url}else{this._seedOneTile(tile,remaining,seedData)}}.bind(this))}});