2013-07-16 2 views
0

Я использую MapFish Print для создания PDF-файлов с картами, создавая изображения карт в pdf, когда я использую только слой WMS для базовых плит полностью. Работает так, как ожидалось.Mapfish Печать векторного слоя GeoJSON пример?

Однако, когда я добавляю векторный слой и объект GeoJSON внутри него, mapfish печать выдает следующее сообщение об ошибке:

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, просто отлично. Просмотрев источник для печати карт, я не могу понять, почему именно это происходит. Хотя это, похоже, связано со стилями, мне не повезло добавить его в запрос, чтобы исправить эту проблему.

- Обновление:

Если кто-то когда-либо попадается этот вопрос, проблема заключалась в том, что (без документов), вы должны определить в векторном слое, набор стилей, и убедитесь, что каждая функция в geoJSON использует стиль.

ответ

0

Проблема заключалась в том, что (недокументированные) вы должны определить внутри векторного слоя, набор стилей и стиль, и убедитесь, что каждая функция в geoJSON использует стиль.

Стили сами по себе являются стилями SVG, хотя многие теги переименованы, поэтому вместо заполнения цвета они будут заполнены цветом.

Смотрите здесь чуть подробнее: http://www.mapfish.org/doc/print/protocol.html#layers-params

Смежные вопросы