OpenLayers 3 DragBox не отображается на карте - PullRequest
0 голосов
/ 30 октября 2018

Когда я перемещаюсь + перетаскиваю карту и отпускаю, слушатель boxend срабатывает. Кроме того, если я проверяю объект карты после добавления взаимодействия dragBox к карте, взаимодействие dragBox находится в объекте карты. Проблема заключается в том, что поле никогда не отображается на карте при выборе региона. Что мне не хватает?

 $scope.drawBox = () => {
    const dragBox = new ol.interaction.DragBox({
      condition: ol.events.condition.shiftKeyOnly,
      style: new ol.style.Style({
        stroke: new ol.style.Stroke({
          color: [0, 0, 255, 1],
          width: 2
        })
      })
    });

    map.addInteraction(dragBox);

    dragBox.on("boxend", function(e) {
      console.log("boxend called"); // listener is triggered
    });
  };

1 Ответ

0 голосов
/ 30 октября 2018

Выпуск версии OpenLayers v3.11.0 изменил ваш стиль ol.interaction.DragBox и ol.interaction.DragZoom. Вместо того, чтобы использовать атрибут стиля при создании объекта, вы должны стилизовать элемент с помощью CSS.

Старый:

 new ol.interaction.DragZoom({
      style: new ol.style.Style({
        stroke: new ol.style.Stroke({
          color: 'red',
          width: 3
        }),
        fill: new ol.style.Fill({
          color: [255, 255, 255, 0.4]
        })
      })
    })

Новое:

.ol-dragzoom {
  border-color: red;
  border-width: 3px;
  background-color: rgba(255,255,255,0.4);
}
...