Openlayers 3 Wicket добавляет новую функцию после инициализации

Я пытаюсь добавить новую функцию с помощью LineStrings всякий раз, когда нажимается кнопка (после инициализации), и мне интересно, как это сделать, не выполняя обновления. В настоящее время при нажатии кнопки новая функция добавляется на карту, но не отображается до тех пор, пока я не обновлю страницу. Как это сделать правильно или проще всего? Я использую кнопку AjaxButton, которая не обновляет страницу, поскольку я не хочу, чтобы она обновлялась. Мое текущее решение - просто remove(this.map), а затем add(this.map), поскольку он загрузится на новую карту с новой функцией при следующем обновлении, но да, я хочу, чтобы это произошло без необходимости обновления.

Решает ли это вашу проблему? stackoverflow.com/questions/30997633/…

Grmpfhmbl 13.06.2018 12:06
0
1
104
1

Ответы 1

OpenLayersMap имеет для этого метод #update(AjaxRequestTarget).

AjaxButton button = new AjaxButton("someId") {

  @Override protected void onSubmit(AjaxRequestTarget target) {
     // add feature
     map.update(target); // this will repaint just the map
  }

}

Не похоже, что у карты есть функция обновления. Вот класс для него: wicketstuff.org/core/javadoc6/apidocs/org/wicketstuff/…

Lars Karlsen 11.06.2018 12:50

А вот исходный код: github.com/wicketstuff/core/blob/… (это главная ветка с сегодняшнего дня).

martin-g 11.06.2018 12:56

ОК. Я вижу разницу. Я смотрел проект openlayers, а вы используете openlayers3. Имеет updateLayers(): github.com/wicketstuff/core/blob/master/openlayers3-parent/…

martin-g 11.06.2018 12:58

Хм. Это ничего не дало. Я добавил новый слой на карту и вызвал map.updateLayers, но ничего не произошло. Если я обновлюсь позже, новый слой будет там.

Lars Karlsen 11.06.2018 13:50

Похоже, эта функция выполняет итерацию только по каждому слою и вызывает на нем .setVisible и .setOpacity. Я не думаю, что это подтолкнет javascript новой функции к браузеру (?)

Lars Karlsen 11.06.2018 14:27

Другие вопросы по теме