在LeafletJS中打印地图

9

我是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

有人能帮助我吗?

4个回答

7
你可以使用jQuery插件来打印地图。
代码非常简单:
$('#map').print();

这里是codepen


2
你是否已经在你的HTML中添加了这一行?
<script src="http://apps2.geosmart.co.nz/mapfish-print/pdf/info.json?var=printConfig"></script>

我认为你需要启用CORS跨域资源共享


1
//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();

}

1
我认为你在mapfish打印服务器的config.yaml中错过了一些允许主机列表的添加。如果要允许所有主机,可以添加以下内容:
- !ipMatch
  host:0.0.0.0
  mask:0.0.0.0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接