Страница 1 из 1

Карта в плагине

Добавлено: 10 май 2011, 12:03
kuzkok
Как в плагине (в открепляемое\диалоговое окно) добавить карту?
пытаюсь использовать qgsmapcanvas, но без добавления слоев в maplayerregistry они не прорисовываются, если же их туда добавлять - то прорисовываются и на основной карте. Кто-то сталкивался с подобным?

Re: Карта в плагине

Добавлено: 10 май 2011, 12:49
Voltron
Программно. В примере предполагается, что виджет содержит объект layout c именем canvasLayout

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

self.canvas = QgsMapCanvas()
self.canvas.setCanvasColor( QColor( 200, 200, 255 ) )
self.canvas.enableAntiAliasing( True )
self.canvas.show()

self.canvasLayout.addWidget( self.canvas )
Описанное вами поведение абсолюно логично и нормально.

Re: Карта в плагине

Добавлено: 10 май 2011, 13:00
kuzkok
Проблема не столько в том как карту на виджет добавить - это просто, а как заставить её прорисовываться независимо от основной карты приложения.
Требуется чтобы на основной карте и карте плагина были разные слои.

Re: Карта в плагине

Добавлено: 10 май 2011, 13:39
Voltron
Тогда надо было сразу правильно сформулировать вопрос :-)

Алгоритм такой: при добавлении слоя отключаете отсылку сигнала layerWasAdded. Вручную формируете список слоёв, которые должны отображаться на карте расширения. Опять таки вручную устанавливаете layerset для карты.

Re: Карта в плагине

Добавлено: 10 май 2011, 13:55
kuzkok
благодарю, все гораздо проще чем мне казалось.