Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gis OpenLayers文本标签甚至与填充重叠_Gis_Openlayers - Fatal编程技术网

Gis OpenLayers文本标签甚至与填充重叠

Gis OpenLayers文本标签甚至与填充重叠,gis,openlayers,Gis,Openlayers,Ol文档说明,可以在文本标签上使用填充来进行分离 但是,即使我指示填充,我的标签仍然重叠 codepen上的实时示例: 样式功能: function styleFunction (feature) { return new ol.style.Style({ text: new ol.style.Text({ text: feature.get('PORT_NAME'), padding: [3, 3, 3, 3], font:

Ol文档说明,可以在文本标签上使用填充来进行分离

但是,即使我指示填充,我的标签仍然重叠

codepen上的实时示例:

样式功能:

  function styleFunction (feature) {
   return new ol.style.Style({
      text: new ol.style.Text({
        text: feature.get('PORT_NAME'),
        padding: [3, 3, 3, 3],
        font: "bold 15px sans-serif"
    })
  });};

由于缩放级别的原因,我真的看不到它不会重叠的方式,但为了使其更可见,您可以尝试下面的示例


你试过分离器吗???如果不试试,它可能会解决你的问题。 为此,请从以下位置替换矢量层配置:

var vectorLayer = new ol.layer.Vector({
        source: vectorSource,
        style: styleFunction
      });
为此:

var vectorLayer = new ol.layer.Vector({
        source: vectorSource,
        style: styleFunction,
        declutter: true
      });

请记住,如果重叠,分离器应隐藏标签,并在缩放级别足以不重叠时显示标签

我们根本不想隐藏标签。根据文档,填充会在文本周围添加“像素以进行分离”。即使我将填充增加到[100100100],也没有在任何缩放级别添加填充。我假设填充将像CSS一样工作并确保没有重叠,但我现在知道它可能只是与“declutter”结合使用矢量层中的选项强制隐藏更多标签。@sjvmari填充也与backgroundFill和backgroundStroke结合使用,但其本身没有效果。我想我们都同意,ol在这方面的当前文档至少非常混乱,如果不是彻头彻尾的误导,实际上我想我刚刚意识到了这个问题。我假设填充会像CSS一样,确保没有重叠,但我认为它只是与向量层中的“declutter”选项结合使用,以强制隐藏更多标签。这解释了为什么填充对我不起作用。但是隐藏标签并不是我想要的行为。我希望有一种方法可以在标签重叠时应用偏移或填充。但是它是一个更复杂的功能来实现我假设我现在看到填充与“declutter”向量层选项结合使用,通过向标签添加填充缓冲区来强制隐藏更多标签。在OpenLayers中,当存在重叠时,是否有方法偏移标签而不是隐藏标签??
var vectorLayer = new ol.layer.Vector({
        source: vectorSource,
        style: styleFunction,
        declutter: true
      });