I am using the createTile
with Vue2Leaflet library to make custom tiles. As far as I saw in the documentation, the function runs as many times as there are coords
on the map. In my case, the function is triggered way more times than I have images to return so at the end I get 90%+ empty tiles that just clutter the map. I was wondering if there is a way to check whether or not an image has a valid path before it returns it? I tried using image.onload
but it works after the function had already returned
an empty tile.
createTile: function (coords, done) {
console.log(1);
var src;
src = `https://somecoolurl/${coords.x}_${coords.y}_${coords.z}.jpg`;
const img = window.L.DomUtil.create("img");
img.crossOrigin = "anonymous";
img.src = src;
img.onerror = function () {
// handle on error
};
img.onload = function () {
console.log(2);
// handle if image src was valid
done(null, img);
};
console.log(3);
return img;
}
In this case, the console will print
1 3 2
.
If such thing is not possible and createTile
has to always return a tile, is there a way I can remove tiles from the extended TileLayer once the tiles have been added to it?
Advertisement
Answer
The problem was that in my case I was generating multiple TileLayers and I was only specifying the tileSize
and not the bounds
. Therefore, the createTile
was creating unnecessary empty tiles that lowered the performance of the map. It was when I also added bounds
to each tile layer that the problem was resolved.