Я пытаюсь добавить новую функцию с помощью LineStrings всякий раз, когда нажимается кнопка (после инициализации), и мне интересно, как это сделать, не выполняя обновления. В настоящее время при нажатии кнопки новая функция добавляется на карту, но не отображается до тех пор, пока я не обновлю страницу. Как это сделать правильно или проще всего? Я использую кнопку AjaxButton, которая не обновляет страницу, поскольку я не хочу, чтобы она обновлялась. Мое текущее решение - просто remove(this.map), а затем add(this.map), поскольку он загрузится на новую карту с новой функцией при следующем обновлении, но да, я хочу, чтобы это произошло без необходимости обновления.
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/…
А вот исходный код: github.com/wicketstuff/core/blob/… (это главная ветка с сегодняшнего дня).
ОК. Я вижу разницу. Я смотрел проект openlayers, а вы используете openlayers3. Имеет updateLayers(): github.com/wicketstuff/core/blob/master/openlayers3-parent/…
Хм. Это ничего не дало. Я добавил новый слой на карту и вызвал map.updateLayers, но ничего не произошло. Если я обновлюсь позже, новый слой будет там.
Похоже, эта функция выполняет итерацию только по каждому слою и вызывает на нем .setVisible и .setOpacity. Я не думаю, что это подтолкнет javascript новой функции к браузеру (?)
Решает ли это вашу проблему? stackoverflow.com/questions/30997633/…