2016-07-03 2 views
1

Я пытаюсь отобразить таблицу стилей mapnik, но ничего, что я попробую, будет отображать метки. Вот моя таблица стилей:Рендеринг ярлыков объектов в 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, который я обернул в службу внутри изображения докеров, мой код here. Я загружаю шрифты по умолчанию, и я пробовал несколько вариантов синтаксиса для <TextSymbolizer>, но ничего не имеет значения, метки просто не отображаются.

ответ

1

Для тех, кто еще сталкивается с этим (потому что документы Mapnik являются неполными и в тех случаях, просто неправильны), вам необходимо загрузить системные шрифты, а не по умолчанию шрифтов. В коде:

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

пример код Mapnik для узла показывает mapnik.register_default_fonts();, но папка, что шрифты должны быть загружены из пуста, и я не могу видеть, куда они должны прийти с.

0

Вы пытались установить атрибут placement-type? Например:

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

Спасибо. На самом деле это проблема с загрузкой шрифтов. – aquavitae