如何在 OpenLayers 中通过拖放添加自定义样式

How to add custom style with drag and drop in OpenLayers

我想在使用 drag & drop 功能时使用开放层的自定义样式。

我确实喜欢这个例子并且它有效,但我找不到添加自定义样式的方法。

这是我试过的。 (我正在使用 angular 11)

styles = [
    new Style({
      stroke: new Stroke({
        color: 'blue',
        width: 3,
      }),
      fill: new Fill({
        color: 'rgba(0, 0, 255, 0.1)',
      }),
    }),
    new Style({
      image: new CircleStyle({
        radius: 5,
        fill: new Fill({
          color: 'orange',
        }),
      }),
    }),
  ]

  // ...
   
  ngAfterViewInit() {
   this.map = new Map({
          interactions: defaultInteractions().extend([this.dragAndDropInteraction]),
          target: 'modal_map',
          layers: [
            new TileLayer({
              source: new OSM(),
              style: this.styles, // <-- tried to add it here but didn't worked
            }),
          ],
          view: this.view,
        })
      // ...
    }
  // ...

您需要在添加要素的图层上设置样式。在链接示例中,它会在这里

dragAndDropInteraction.on('addfeatures', function (event) {
  var vectorSource = new VectorSource({
    features: event.features,
  });
  map.addLayer(
    new VectorLayer({
      source: vectorSource,
      style: yourStyle,
    })
  );
  map.getView().fit(vectorSource.getExtent());
});