Closed scaddenp closed 5 years ago
Please provide your code, to check what is wrong.
But it should be as simple as:
L.Control.BrowserPrint.Utils.registerLayer( L.GridLayer.GoogleMutant, "L.GridLayer.GoogleMutant", function(layer, utils) { return L.gridLayer.googleMutant(layer.options); } );
My code is:
mc.print = L.control.browserPrint(
{title:mapName,
documentTitle:mapName
}
).addTo(map);
L.Control.BrowserPrint.Utils.registerLayer(
L.gridLayer.googleMutant,
"L.GridLayer.GoogleMutant",
function (layer,utils) {
return L.gridLayer.googleMutant(layer.options);
}
);
which looks right. No errors coming up in console but no google maps either.
Can you provide full standalone example to debug it?
Yes, that seems possible. I will see what I can do.
okay, here a minimal test html. Obviously, the location of leaflet.browser.print.min.js needs to change and you will need your own google api key. (my key is locked to our servers). <!DOCTYPE html>
I found one problem with empty object layer initialization, it's fixed. Hope it will help.
If not, then sorry, I have no intention to activate billable google map api. But you can help me to fix this problem:
Should be no problem for you.
Please let me know if fix works for you and/or if you are willing to provide an api key to debug this problem locally.
Ok, tried it but no joy. You could try this instead:
(It is the old style). This loads tiles with watermarks all over them into leaflet plus an alert. However, it might isolate the issue. I dont have access to my organisations credential manager for the api.
Okay, it was so stupid from my side :)
In register layer you have to use instance constructor and not a function.
Here is proper registration (as I wrote in first answer):
L.Control.BrowserPrint.Utils.registerLayer( L.GridLayer.GoogleMutant, "L.GridLayer.GoogleMutant", function (layer,utils) { return L.gridLayer.googleMutant(layer.options); } );
And you have used function as instance mapper.
Regards, Igor
Hi, i'm having this problem when I'm using with domtoimage, have some idea? here the example: https://embed.plnkr.co/plunk/c60SyG3FA8HPAqUR
I find some workaround, adding encodeURI(), on dom-to-image directly replacing d.src=a with d.src=encodeURI(a)
or
window.print = function () {
let node = document.querySelector(".grid-print-container");
return domtoimage
.toPng(node, { filter: node => { return node.src = encodeURI(node.src); }})
.then(function (dataUrl) {
var link = document.createElement('a');
link.download = map.printControl.options.documentTitle || "exportedMap" + '.png';
link.href = dataUrl;
link.click();
});
};
Having no luck with attempts to register layer. I am wondering if it is possible?