maskcanvas tests
by aidankirrane
HTML
<link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.5.1/leaflet.css">
<script src="http://cdn.leafletjs.com/leaflet-0.5.1/leaflet.js"></script>
<script src="http://domoritz.de/vbb-coverage/static/js/QuadTree.js"></script>
<div id="map"></div>
CSS
#map { height: 300px; }
JavaScript
var cloudmadeAttribution = 'Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="http://cloudmade.com">CloudMade</a>';
var layer_CloudMate = new L.tileLayer(
'http://{s}.tile.cloudmade.com/63250e2ef1c24cc18761c70e76253f75/997/256/{z}/{x}/{y}.png',{
attribution: cloudmadeAttribution,
maxZoom: 18
}
);
map = new L.Map('map', {
center: new L.LatLng(52.51538, 13.40997),
zoom: 8,
layers: [layer_CloudMate]
});
L.TileLayer.MaskCanvas = L.TileLayer.Canvas.extend({
options: {
radius: 5,
useAbsoluteRadius: true, // true: radius in meters, false: radius in pixels
color: '#000',
opacity: 0.5,
debug: false
},
initialize: function (options, data) {
var self = this;
L.Util.setOptions(this, options);
this.drawTile = function (tile, tilePoint, zoom) {
var ctx = {
canvas: tile,
tilePoint: tilePoint,
zoom: zoom
};
if (self.options.debug) {
self._drawDebugInfo(ctx);
}
this._draw(ctx);
};
},
_drawDebugInfo: function (ctx) {
var max = this.tileSize;
var g = ctx.canvas.getContext('2d');
g.globalCompositeOperation = 'destination-over';
g.strokeStyle = '#000000';
g.fillStyle = '#FFFF00';
g.strokeRect(0, 0, max, max);
g.font = "12px Arial";
g.fillRect(0, 0, 5, 5);
g.fillRect(0, max - 5, 5, 5);
g.fillRect(max - 5, 0, 5, 5);
g.fillRect(max - 5, max - 5, 5, 5);
g.fillRect(max / 2 - 5, max / 2 - 5, 10, 10);
g.strokeText(ctx.tilePoint.x + ' ' + ctx.tilePoint.y + ' ' + ctx.zoom, max / 2 - 30, max / 2 - 10);
},
_createTile: function () {
var tile =...