如何设置图层样式

时间:2019-05-07 11:44:21

标签: openlayers-5

我试图将图像图标放在openlayers 5层的节点上,但似乎无法正确处理。 我加载了osm文件,一切正常,但出现了一个小圆圈,而不是图标。

我已经在线搜索过,我所能找到的就是如何更改要素图标,而不是图层的所有要素。

我的osm文件的一部分

<?xml version='1.0' encoding='UTF-8'?>
<osm version='0.6' upload='false' generator='JOSM'>
  <node id='-102236' lat='37.1556611' lon='-8.5700716'>
    <tag k='vpa_cod' v='784' />
    <tag k='vpa_linha' v='11,38,' />
  </node>
</osm>

层的声明

new VectorLayer({
          source: new VectorSource({
            url: './assets/layers/111_.osm',
            format: new OSMXML(),
            formatOptions: {
                extractStyles: true,
                extractAttributes: true,
                maxDepth: 2
                },

                style: new Style({
                  image: new Icon( ({
                    anchor: [0, 0],
                    anchorXUnits: 'fraction',
                    anchorYUnits: 'fraction',
                    src: 'assets/images/icons/11.svg',
                    scale : 0.35
                  }))
                })
          })
        })

我希望在节点上有一个图标,但只会出现小圆圈。

1 个答案:

答案 0 :(得分:0)

样式应该是图层的属性,而不是源属性

new VectorLayer({
          source: new VectorSource({
            url: './assets/layers/111_.osm',
            format: new OSMXML(),
            formatOptions: {
                extractStyles: true,
                extractAttributes: true,
                maxDepth: 2
            }
          }),
          style: new Style({
            image: new Icon({
              anchor: [0, 0],
              anchorXUnits: 'fraction',
              anchorYUnits: 'fraction',
              src: 'assets/images/icons/11.svg',
              scale : 0.35
            })
          })
        })