Динамический слой

Вопросы по свободной ГИС QGIS. Сообщения об ошибках, предложения по улучшению, локализация.
Ответить
Аватара пользователя
kas
Новоприбывший
Сообщения: 1
Зарегистрирован: 20 апр 2012, 15:08
Репутация: 0
Откуда: Тверь
Контактная информация:

Динамический слой

Сообщение kas » 10 авг 2012, 08:17

Доброго времени суток!

Пишу на С++ приложение с использованием QGIS API.
И бьюсь уже долгое время с одной проблемой: необходимо отображать слой с динамической информацией поверх статических слоев карты.
Под динамическим слоем я подразумеваю точечный слой (QgsVectorLayer), причем такой, где точки изменяют свои координаты.
Это может быть, например, отметка о местоположении, с координатами, полученными с GPS-приемника.
В этом случае каждую секунду, при получении новых координат от средства позиционирования, точечному объекту (объекту класса QgsFeature) устанавливаются новые координаты посредством QgsFeature::setGeometry().
Но на экране обновления (перерисовки) этого слоя не происходит, что вполне логично.
Обновления отображения удается добиться только путем обновления всей карты слоев (вызовом QgsMapCanvas::refresh() ), что занимает непростительно много времени при более или менее сложной карте...

Методы

Код: Выделить всё

QgsVectorLayer::commitChanges()
QgsVectorLayer::updateExtents()
QgsVectorLayer::setModified()
QgsVectorDataProvider::changeGeometryValues()
как я понял, на отображение данных не влияют, и ситуацию не меняют.

Можно ли в движке QGIS обновлять отображение только одного слоя, а не всей карты?

Буду благодарен за любые наводки и информацию! Из-за этой проблемы с обновлением, уже приходят мысли отказываться от всего прекрасного движка QGIS, чего жутко не хочется делать.

Ответить

Вернуться в «QGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость