【问题标题】:OpenLayers print mapOpenLayers 打印地图
【发布时间】:2012-09-27 12:32:17
【问题描述】:

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

【问题讨论】:

标签: printing map openlayers geoserver


【解决方案1】:

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

为了粗暴地解决,我用ajax请求中的公共url替换了ip referenze(参见下面的代码。我希望它对其他人有用......

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);
  }
});

【讨论】:

    【解决方案2】:

    最简单的方法是使用 GeoExt.PrintMapPanel (geoext example)。请务必阅读GeoServer Printing Module

    UPD GET 请求示例。您必须修改 url、“baseURL”、“layers”。如果您指定现有层,则此请求必须返回 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}]}
    

    【讨论】:

    • 我做到了。但并非一切正常。 Geoserver 和与他合作的站点位于不同的服务器上。代理已配置,但不返回 create.json pdf 文件。可能是什么问题?
    • Geoserver 打印模块是否安装正确?试试http://{geoserver_url}:8080/geoserver/pdf/info.json;
    • 是的,它运行良好。但是 http://{geoserver_url}:8080/geoserver/pdf/create.json 返回:“生成 PDF 时出错:未知方法:/create.json”
    • 尝试测试link pdf 返回良好。
    • 这是正常的。我更新了我的答案,尝试手动创建一个 GET 请求。查看请求状态和地理服务器日志。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-02
    • 2015-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-05
    相关资源
    最近更新 更多