Printing 开放图层打印地图

Printing 开放图层打印地图,printing,map,openlayers,geoserver,Printing,Map,Openlayers,Geoserver,如何从OpenLayers打印地图?我想在我的OpenLayers页面中添加打印按钮=)我的geoserver有MapFish扩展,但不知道如何向它发出请求。任何其他想法都欢迎)请帮忙 最简单的方法是使用GeoExt.PrintMapPanel()。一定要阅读 UPD获取请求示例。您必须修改url、“baseURL”、“层”。如果指定现有图层,则此请求必须返回pdf文件 http://demo.opengeo.org/geoserver/pdf/print.pdf?spec={"units":"

如何从OpenLayers打印地图?我想在我的OpenLayers页面中添加打印按钮=)我的geoserver有MapFish扩展,但不知道如何向它发出请求。任何其他想法都欢迎)请帮忙

最简单的方法是使用GeoExt.PrintMapPanel()。一定要阅读

UPD获取请求示例。您必须修改url、“baseURL”、“层”。如果指定现有图层,则此请求必须返回pdf文件

http://demo.opengeo.org/geoserver/pdf/print.pdf?spec={"units":"degrees","srs":"EPSG:4326","layout":"A4","dpi":75,"mapTitle":"Printing Demo","comment":"This is a simple map printed from GeoExt.","layers":[{"baseURL":"http://demo.opengeo.org/geoserver/wms","opacity":1,"singleTile":true,"type":"WMS","layers":["topp:tasmania_state_boundaries"],"format":"image/jpeg","styles":[""]}],"pages":[{"center":[146.56000000001,-41.56],"scale":8192000,"rotation":0}]}

我在使用反向代理时遇到了类似的问题,因为我从info.json contais本地ip引用而不是公共url中发现了答案

为了残忍地解决这个问题,我在ajax请求中用公共url替换了ip引用(参见下面的代码。我希望它能对其他人有用

this.capabilities.createURL = this.capabilities.createURL.replaceAll("192.168.0.0:8080", "mypublicurl");
this.capabilities.printURL= this.capabilities.printURL.replaceAll("192.168.0.0:8080", "mypublicurl");


Ext.Ajax.request({
    url:this.capabilities.createURL,
    jsonData:jsonData,
    success:function(response){
        response.responseText = response.responseText.replaceAll("192.168.0.0:8080", "mypublicurl");
        window.open(Ext.decode(response.responseText).getURL);
  }
});

我做到了。但并非所有功能都正常。Geoserver和与他一起工作的站点位于不同的服务器上。代理已配置,但不会返回到create.json pdf文件。可能是什么问题?Geoserver打印模块安装正确?请尝试
http://{Geoserver_url}:8080/geoserver/pdf/info.json
;是的,它工作得很好。但是http://{geoserver_url}:8080/geoserver/pdf/create.json返回:“生成pdf时出错:未知方法:/create.json”尝试测试pdf返回良好。这是正常的。我更新了答案,尝试手动创建GET请求。查看请求状态和geoserver日志。