2014-04-27 19 views
8

Jestem nowy w LeafletJS. Próbuję wydrukować mapę w LeafletJS. Mój kod do druku jest tak:Wydrukuj mapę w 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); 

Ale gdy klikam przycisk drukowania błąd przychodzi tak

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 

Czy ktoś może mi pomóc?

Odpowiedz

1

Czy dodałeś tę linię do swojego html?

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

Plus Myślę, że musisz włączyć CORS.

1

Myślę, że nie udało Ci się dodać hosta do listy dozwolonych hostów w pliku config.yaml na serwerze wydruku mapfish.

Jeśli chcesz, aby wszystkie hosty można dodać:

- !ipMatch 
    host:0.0.0.0 
    mask:0.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(); 

}