Как автоматически изменить размер шрифта фигуры в Openlayers 6? - PullRequest
0 голосов
/ 27 мая 2020

Я использовал Openlayers для рисования символов и фигур.

Я хочу динамически изменять размер символов в соответствии с размером фигур.

function setStyle(feature: RenderFeature | Feature<any>, resolution: number): void | Style | Style[] {
  const props: IProps = feature.getProperties()
  const options: IStyleOptions = this.styleOptions(props)
  // const area: number = feature.getGeometry().getArea()
  const fontSize: number = Math.floor(1 / resolution)
  const style: Style = new Style({
    fill: new Fill({
      color: options.fillColor
    }),
    stroke: new Stroke({
      color: options.strokeColor,
      width: 1
    }),
    text: new Text({
      font: `bold ${fontSize}px/1 Malgun Gothic`,
      text: options.text,
      overflow: true
    })
  })
  return style
}

Это результат изображение кода выше

1 Ответ

1 голос
/ 27 мая 2020

Нет простого решения для неправильных форм, но если ваши формы являются прямоугольниками, вам нужно будет учитывать их ширину и высоту, а также максимальное количество строк и символов в строке

  const width: number = getWidth(feature.getGeometry().getExtent())
  const height: number = getHeight(feature.getGeometry().getExtent())
  const fontSize: number = Math.min(width / (maxchars * resolution), height / (maxlines * resolution))
...