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