Export images out of Leaflet maps without a server component, by using Canvas and CORS.
IE >= 10
with no exceptions.For Leaflet < 1.0.0: You must set L_PREFER_CANVAS = true;
so that vector layers are drawn in Canvas
For Leaflet >= 1.0.0: You must set renderer: L.canvas()
for any layer that you want included in the generated image. You can also set this by setting preferCanvas: true
in your map's options.
browserify
npm install --save leaflet-image
web
curl https://raw.github.com/mapbox/leaflet-image/gh-pages/leaflet-image.js > leaflet-image.js
var map = L.mapbox.map('map', 'YOUR.MAPID').setView([38.9, -77.03], 14);
leafletImage(map, function(err, canvas) {
// now you have canvas
// example thing to do with that canvas:
var img = document.createElement('img');
var dimensions = map.getSize();
img.width = dimensions.x;
img.height = dimensions.y;
img.src = canvas.toDataURL();
document.getElementById('images').innerHTML = '';
document.getElementById('images').appendChild(img);
});
leaflet-image is available through the Mapbox Plugin CDN so you don't need to download & copy it. Just include the following script tag:
map is a L.map
or L.mapbox.map
, callback takes (err, canvas)
.
Any images you generate from maps that require attribution - which is most, including all from commercial sources and those that include any data from OpenStreetMap - will require the same attribution as the map did. Remember to attribute.