0

我正在使用 MapFish Print 生成地图的 PDF,当我只使用 WMS 图层作为基础图块时,在 pdf 中创建地图图像是完全可以的。按预期工作。

但是,当我在其中添加矢量图层和 geoJSON 对象时,mapfish print 会引发以下错误:

Exception in thread "tilesReader3" java.lang.NullPointerException
        at org.mapfish.print.map.renderers.vector.PointRenderer.renderImpl(PointRenderer.java:113)
        at org.mapfish.print.map.renderers.vector.PointRenderer.renderImpl(PointRenderer.java:49)
        at org.mapfish.print.map.renderers.vector.GeometriesRenderer.render(GeometriesRenderer.java:69)
        at org.mapfish.print.map.renderers.vector.FeaturesRenderer$FeatureRenderer.renderImpl(FeaturesRenderer.java:62)
        at org.mapfish.print.map.renderers.vector.FeaturesRenderer$FeatureRenderer.renderImpl(FeaturesRenderer.java:58)
        at org.mapfish.print.map.renderers.vector.FeaturesRenderer.render(FeaturesRenderer.java:53)
        at org.mapfish.print.map.renderers.vector.FeaturesRenderer$FeatureCollectionRenderer.renderImpl(FeaturesRenderer.java:70)
        at org.mapfish.print.map.renderers.vector.FeaturesRenderer$FeatureCollectionRenderer.renderImpl(FeaturesRenderer.java:67)
        at org.mapfish.print.map.renderers.vector.FeaturesRenderer.render(FeaturesRenderer.java:53)
        at org.mapfish.print.map.readers.VectorMapReader$1.renderOnPdf(VectorMapReader.java:85)
        at org.mapfish.print.map.ParallelMapTileLoader.handle(ParallelMapTileLoader.java:97)
        at org.mapfish.print.map.ParallelMapTileLoader.handle(ParallelMapTileLoader.java:41)
        at org.pvalsecc.concurrent.OrderedResultsExecutor.addOutput(OrderedResultsExecutor.java:148)
        at org.pvalsecc.concurrent.OrderedResultsExecutor.access$600(OrderedResultsExecutor.java:23)
        at org.pvalsecc.concurrent.OrderedResultsExecutor$Runner.run(OrderedResultsExecutor.java:181)
        at java.lang.Thread.run(Unknown Source)

我发送给 Mapfish 打印的查询是默认示例的略微修改版本(使用不同的 WMS 作为示例的默认设置已关闭),添加了矢量图层,如下所示:

          {
             layout: 'A4 portrait',
             title: 'A simple example',
             srs: 'EPSG:4326',
             units: 'dd',
             outputFilename: 'mapfish-print',
             outputFormat: 'pdf',
             layers: [
                 {
                     type: 'WMS',
                     format: 'image/png',
                     layers: ['OSM-GB:__all__'],
                     baseURL: 'http://www.osmgb.org.uk/ogc/wms'
                 },
                 {
                     type: 'Vector',
                     geoJson: {
                        "type": "FeatureCollection",
                        "features": [
                            {
                                "type": "Feature",
                                "geometry": {
                                    "type": "Point",
                                    "coordinates": [
                                        -0.0996621,
                                        51.5059247
                                    ]
                                },
                                "properties": {
                                }
                            },
                            {
                                "type": "Feature",
                                "geometry": {
                                    "type": "Point",
                                    "coordinates": [
                                        -0.099332,
                                        51.5072000
                                    ]
                                },
                                "properties": {
                                }
                            },
                            {
                                "type": "Feature",
                                "geometry": {
                                    "type": "Point",
                                    "coordinates": [
                                        -0.0945508,
                                        51.50240484
                                    ]
                                },
                                "properties": {
                                }
                            }
                        ]
                    }
                 }
             ],
             pages: [
                 {
                     center: [0.09, 51.50],
                     scale: 4000000,
                     dpi: 190,
                     mapTitle: "First map",
                     comment: "The \"routes\" layer is not shown (the scale is too small)",
                     data: [
                         {id:1, name: 'blah', icon: 'icon_pan'},
                         {id:2, name: 'blip', icon: 'icon_zoomin'}
                     ]
                 },
                 {
                     center: [0.09, 51.50],
                     scale: 500000,
                     dpi: 190,
                     mapTitle: "Second map",
                     comment: "This is a zoomed in version of the first map. Since the scale is more appropriate, we show the \"routes\" layer.",
                     data: [
                         {id:1, name: 'blah', icon: 'icon_pan'},
                         {id:2, name: 'blip', icon: 'icon_zoomin'}
                     ]
                 }
             ]
          }

GeoJSON 验证并显示在 geojsonlint.com 上,很好。查看了 mapfish print 的源代码后,我无法弄清楚为什么会发生这种情况。虽然它似乎与样式有关,但我没有运气在请求中添加一个来解决这个问题。

- 更新:

如果其他人遇到过这个问题,问题是(未记录),您必须在矢量图层中定义一组样式,并确保 geoJSON 中的每个特征都使用一种样式。

4

2 回答 2

0

问题是(未记录),您必须在矢量图层中定义一组样式和一个样式属性,并确保 geoJSON 中的每个特征都使用一个样式。

样式本身是 SVG 样式,尽管许多标签被重命名,所以它们不是填充颜色,而是填充颜色。

有关更多详细信息,请参见此处:http: //www.mapfish.org/doc/print/protocol.html#layers-params

于 2013-07-21T10:19:41.073 回答
0

需要定义的 SVG 样式为OpenLayers.Feature.Vector.style

于 2016-07-18T03:35:35.497 回答