带有文本的 openlayer 标记,关卡有些奇怪

openlayer markers with text, something strange about the level

沙码: https://codesandbox.io/s/icon-color-forked-v7chj?file=/main.js

我使用了图标样式和文本样式的标记,但我发现了一些奇怪的东西。当我添加两个带有图标和文本样式的标记时,好像我添加了两个层,即图标层和文本层。也就是说,图标是一个层次,文字是另一个层次。我认为标记应该是一个整体,所以它的图标和文字应该在同一水平面上。

enter image description here

enter image description here

根据图片,有图标和文字的两个标记,应该是不同的两个level.But一个标记的图标和文字分开。

rome.setStyle(
  new Style({
    image: new Icon({
      color: "#BADA55",
      crossOrigin: "anonymous",
      // For Internet Explorer 11
      imgSize: [180, 180],
      src: "data/square.svg"
    }),
    text: new Text({
      text: "Wow such labeladfasdfasdf",
      offsetY: 0,
      fill: new Fill({
        color: "#42f"
      })
    })
  })
);

文字显示在图像上方,与 zIndex 相同。如果两种样式具有相同的 zIndex ,则两者的文本将位于两个图标上方,并且不能保证图标的顺序,因为它将取决于先呈现哪个(通常是源中功能的顺序).您可以使用 zIndex 使一种样式的图标保持在另一种样式的文本上方,并确保哪个图标位于另一种样式之上:

  new Style({
    image: new Icon({
      color: "#BADA55",
      crossOrigin: "anonymous",
      // For Internet Explorer 11
      imgSize: [180, 180],
      src: "data/square.svg"
    }),
    text: new Text({
      text: "Wow such labeladfasdfasdf",
      offsetY: 0,
      fill: new Fill({
        color: "#42f"
      })
    }),
    zIndex: 1
  })


  new Style({
    image: new Icon({
      crossOrigin: "anonymous",
      src: "data/bigdot.png",
      scale: 0.2
    }),
    text: new Text({
      text: "Wow such label",
      offsetY: 0,
      fill: new Fill({
        color: "#42f"
      })
    }),
    zIndex: 2
  })