【发布时间】:2017-10-23 08:48:00
【问题描述】:
我有一个用 Leaflet 构建的叶绿素地图,由于插件 Leaflet-polygon.fillPattern.js 显示了填充有阴影的多边形,它工作正常。
function myStyle (feature) {
return {
fill: 'url(assets/img/image.png)',
fillColor: '#6677cd',
weight: 7,
opacity: 1,
fillOpacity: 1
}
}
var layer = new L.geoJson(data,{
style:myStyle
});
我可以使用 Geoserver print 和 Leaflet.print 插件打印我的地图,但问题是我打印的地图只显示填充了颜色的多边形而不是我的图案。
我检查了我发送到 Geoserver 打印的规范 Json,它显示填充功能的选项设置得很好:
fill:"url(assets/img/image.png)"
我尝试了 png 和 svg 图像,但都没有显示。
知道为什么我的打印地图没有渲染多边形中的阴影吗?
这是我尝试在 Geoserver 中发送多边形样式时的 SLD 代码
<?xml version="1.0" encoding="UTF-8"?>
<StyledLayerDescriptor xmlns="http://www.opengis.net/sld"
xmlns:ogc="http://www.opengis.net/ogc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.1.0"
xmlns:xlink="http://www.w3.org/1999/xlink"
xsi:schemaLocation="http://www.opengis.net/sld
http://schemas.opengis.net/sld/1.1.0/StyledLayerDescriptor.xsd"
xmlns:se="http://www.opengis.net/se">
<NamedLayer>
<se:Name>PSC_Surf</se:Name>
<UserStyle>
<se:Name>PSC_Surf</se:Name>
<se:FeatureTypeStyle>
<se:Rule>
<se:Name>Single symbol</se:Name>
<se:PolygonSymbolizer>
<se:Fill>
<se:SvgParameter name="fill">#ffff00</se:SvgParameter>
</se:Fill>
<se:Stroke>
<se:SvgParameter name="stroke">#000001</se:SvgParameter>
<se:SvgParameter name="stroke-width">1</se:SvgParameter>
<se:SvgParameter name="stroke-linejoin">bevel
</se:SvgParameter>
</se:Stroke>
</se:PolygonSymbolizer>
<se:PolygonSymbolizer>
<se:Fill>
<se:GraphicFill>
<se:Graphic>
<se:Mark>
<se:WellKnownName>horline</se:WellKnownName>
<se:Stroke>
<se:SvgParameter name="stroke">#5c00b8</se:SvgParameter>
<se:SvgParameter name="stroke-width">3</se:SvgParameter>
</se:Stroke>
</se:Mark>
<se:Size>11</se:Size>
<se:Rotation>
<ogc:Literal>45</ogc:Literal>
</se:Rotation>
</se:Graphic>
</se:GraphicFill>
</se:Fill>
</se:PolygonSymbolizer>
</se:Rule>
</se:FeatureTypeStyle>
</UserStyle>
</NamedLayer>
</StyledLayerDescriptor>
更准确地说,我的问题是为什么 Geoserver 打印模块没有渲染我在传单中调用的填充样式,这要归功于带有 style 选项的 leaflet-polygon.fillPattern.js 填充:'url(assets/img/image.png)',
对于标记层,我可以调用我的图标并将它们发送到规范 JSON 中的 Geoserver 打印模块:
var iconUrl = icon.options.iconUrl;
style = {externalGraphic: this._getAbsoluteUrl(iconUrl)};
所以,我尝试了我的多边形: style = {graphicFill: url(assets/img/image.png)};
但它不起作用
【问题讨论】:
-
GeoServer 可以看到“assets/img/image.png”吗?
-
是的,我在同一个文件夹中有图标,它适用于图标和外部图形
-
如果您在 GeoServer 中设置多边形样式,它会起作用吗?
-
我只是尝试导出我最初在 Qgis 中的多边形样式,然后在 SLD 中导出我的样式。然后,我在 Geoserver 中应用了这种样式,我看不到舱口......
-
请将 SLD 的相关部分添加到问题中
标签: printing leaflet fill geoserver