OpenLayers разных цветовых форм на одном слое? - PullRequest
0 голосов
/ 06 января 2019

Итак, я написал код, позволяющий мне добавлять фигуры на карту, и функция рисования выглядит следующим образом

  addInteraction() {
    this.coreMap.map.addInteraction(this.modifyLayer);
    this.draw = new Draw({
      source: this.vectorSource,
      style: this.style,
      type: 'Point'
    });
    this.coreMap.map.addInteraction(this.draw);
    this.snap = new Snap({source: this.vectorSource});
    this.coreMap.map.addInteraction(this.snap);
  }

То, что работает нормально, позволяет мне рисовать на карте и т. Д. Однако, если я попытаюсь изменить стиль на vectorLayer, скажем, с зеленой точки на красную, она изменит каждую точку на красную, а не на новую, я Я попробовал пару вещей;

  • Попытка вставки нового объекта стилей в vectorLayer.styles с помощью setStyle ([styleOneOpts, styleTwoOpts])

  • Установка свойства стиля свойства Draw на что-то другое, что изменит курсор на упомянутый цвет, но нарисованная точка все равно будет цветом стиля vectorLayers

  • Попытка создания нового объекта Draw и добавления его в качестве совершенно нового взаимодействия с картой

В настоящий момент я предполагаю, что мне придется создавать новый слой каждый раз, когда я хочу создать новую форму с другим цветом, что хорошо, если нет возможности обойти это, но я бы предпочел, чтобы он оставался в пределах один слой.

1 Ответ

0 голосов
/ 06 января 2019

Вы можете установить стиль для каждого вновь создаваемого объекта или, в качестве альтернативы, установить свойство цвета для каждого объекта, например feature.set('color', 'red');, и использовать функцию стиля для слоя. При этом будет использоваться цвет, установленный для функции, или по умолчанию черный, если ни один не был установлен

style: function(feature) {
  return new Style({

    ...

      color: feature.get('color') || 'black',

   ...

  })
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...