Распечатать карту в LeafletJS



Я новичок в LeafletJS. Я пытаюсь напечатать карту в LeafletJS. Мой код для печати выглядит так:



     printProvider = L.print.provider({
capabilities: printConfig,
method: 'GET',
dpi: 254,
autoLoad: true,
// outputFormat: 'pdf',
customParams: {
mapTitle: 'Print Test',
comment: 'Testing Leaflet printing'
}
});
// Create a print control with the configured provider and add to the map
printControl = L.control.print({
provider: printProvider
});
map.addControl(printControl);


Но когда я нажимаю кнопку "Печать", ошибка возникает следующим образом



Proxy Error.
The proxy server received an invalid response from an upstream server.
The proxy server could not handle the request GET /mapfish-print/pdf/print.pdf.

Reason: Error reading from remote server


Может кто-нибудь помочь мне?

405   4  

4 ответов:

Вы можете использовать jQuery Plugin для печати карты.

Код так же прост, как

$('#map').print();

Вот кодовое слово .

Вы добавили эту строку в свой html ?

<script src="http://apps2.geosmart.co.nz/mapfish-print/pdf/info.json?var=printConfig"></script>

Плюс я думаю, что вы должны включитьCORS .

Я думаю, что вы пропустили добавление некоторого хоста в список разрешенных хостов в config.yaml в вашем сервере печати mapfish.

Если вы хотите разрешить все хосты, вы можете добавить:

- !ipMatch
  host:0.0.0.0
  mask:0.0.0.0
//Printing
function printMyMap(){
   let myMapHTML= document.getElementById("myMap");
   let mywindow = window.open("", "PrintTheMap","width=600,height=800");

 let header = '<html><head><link rel="stylesheet"  href="/your path/Site.css" media="print" /> <link rel="stylesheet"  href="/your path/leaflet.css" /> </head>
 //Adding the header to the window
 mywindow.document.write(header);
 //Adding the map into the body
 mywindow.document.write("<body>"+myMapHTML+"<body>");
 mywindow.document.close(); // necessary for IE >= 10
 mywindow.focus(); // necessary for IE >= 10
 mywindow.print();
 mywindow.close();

}

Comments

    Ничего не найдено.