在mapnik中渲染function标签

我正在尝试渲染mapnik样式表,但是我没有尝试渲染标签。 这是我的样式表:

<Map srs="+init=epsg:4326"> <Style name="Polygon"> <Rule> <LineSymbolizer stroke="black" stroke-width="2" /> <TextSymbolizer face-name="DejaVu Sans" placement="interior" allow-overlap="true">[name]</TextSymbolizer> </Rule> </Style> <Layer name="polygon" srs="+init=epsg:4326"> <StyleName>Polygon</StyleName> <Datasource> <Parameter name="type">geojson</Parameter> <Parameter name="inline"><![CDATA[ { "type": "FeatureCollection", "features": [ { "type": "Feature", "geometry": { "coordinates": [[ [18.6609649658203, -32.59028569040753], [18.6536693572998, -32.59762547484460], [18.6737108230590, -32.59892704873228], [18.6609649658203, -32.59028569040753] ]], "type": "Polygon" }, "properties": { "name": "polygon" } } ] } ]]> </Parameter> </Datasource> </Layer> </Map> 

地图本身呈现良好,但我不能得到一个标签出现。 我正在使用node-mapnik ,它包含在node-mapnik中的服务中,我的代码在这里 。 我正在加载默认的字体,我已经尝试了<TextSymbolizer>的语法的几个变种,但没有任何区别,标签只是不出现。

对于任何遇到这种情况的人(因为mapnik的文档不完整,如果明显错误),您需要加载系统字体,而不是默认字体。 在代码中:

 const mapnik = require('mapnik'); mapnik.register_system_fonts(); 

Mapnik的节点代码示例显示mapnik.register_default_fonts(); ,但字体应该加载的文件夹是空的,我不能看到他们应该从哪里来。

您是否尝试设置placement-type属性? 例如:

 <TextSymbolizer face-name="DejaVu Sans" placement-type="simple" placement="interior" allow-overlap="true">[name]</TextSymbolizer>