为每个绘制点设置新名称打开图层

时间:2019-04-01 14:18:46

标签: openlayers

我将点添加到地图上。我想为每个点添加新名称,例如'Point 1''Point 2'等。问题是,当我将function(){}添加到style时,它会更改{{ 1}},每步动作都会自动变大。参见下面的代码和照片

indexPoint

image 1 image 2 image 3

1 个答案:

答案 0 :(得分:3)

如果将函数传递给图层的“样式”属性,则称为样式函数。每次渲染图层时,都会调用一次样式功能。在您的示例中,全局变量indexPoint在每个平移,每次缩放等上更新其值。

我认为您有2个选择:

选项1:将每个点的数量设置为一个属性,然后让styleFunction读取该属性。您可以访问样式函数中的features属性,因为它可以将特征和分辨率作为参数,看起来可能像这样:

  style: function(feature, resolution) {
    return new Style({
      image: new ol.style.Circle({
        radius: 7,
        fill: new ol.style.Fill({
        color: '#ffcc33'
        })
      }), 
      text: new Text({
        text: feature.get('number'),
        fill: new Fill({color: '#ffcc33'}),
      });
    });
  }

您可以在用户绘制点时立即设置“数字”属性,这可以this way完成。

选项2:不要在图层上设置样式功能,而应在创建每个特征时分别设置其样式