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


person aquavitae    schedule 03.07.2016    source источник


Ответы (2)


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

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

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

person aquavitae    schedule 05.07.2016

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

<TextSymbolizer face-name="DejaVu Sans" placement-type="simple" placement="interior" allow-overlap="true">[name]</TextSymbolizer>
person Alexandr Lazarev    schedule 04.07.2016
comment
Спасибо. На самом деле это закончилось проблемой с не загружаемыми шрифтами. - person aquavitae; 05.07.2016