@@ -892,14 +892,17 @@ void GlobePlugin::updateLayers()
892
892
}
893
893
mLayerExtents .clear ();
894
894
895
+ QStringList drapedLayers;
896
+ QStringList selectedLayers = mDockWidget ->getSelectedLayers ();
897
+
895
898
// Disconnect any previous repaintRequested signals
896
899
foreach ( const QString& layerId, mTileSource ->layerSet () )
897
900
{
898
901
QgsMapLayer* mapLayer = QgsMapLayerRegistry::instance ()->mapLayer ( layerId );
899
902
if ( mapLayer )
900
903
disconnect ( mapLayer, SIGNAL ( repaintRequested () ), this , SLOT ( layerChanged () ) );
901
904
if ( dynamic_cast <QgsVectorLayer*>( mapLayer ) )
902
- connect ( static_cast <QgsVectorLayer*>( mapLayer ), SIGNAL ( layerTransparencyChanged ( int ) ), this , SLOT ( layerChanged () ) );
905
+ disconnect ( static_cast <QgsVectorLayer*>( mapLayer ), SIGNAL ( layerTransparencyChanged ( int ) ), this , SLOT ( layerChanged () ) );
903
906
}
904
907
osgEarth::ModelLayerVector modelLayers;
905
908
mMapNode ->getMap ()->getModelLayers ( modelLayers );
@@ -909,12 +912,11 @@ void GlobePlugin::updateLayers()
909
912
if ( mapLayer )
910
913
disconnect ( mapLayer, SIGNAL ( repaintRequested () ), this , SLOT ( layerChanged () ) );
911
914
if ( dynamic_cast <QgsVectorLayer*>( mapLayer ) )
912
- connect ( static_cast <QgsVectorLayer*>( mapLayer ), SIGNAL ( layerTransparencyChanged ( int ) ), this , SLOT ( layerChanged () ) );
915
+ disconnect ( static_cast <QgsVectorLayer*>( mapLayer ), SIGNAL ( layerTransparencyChanged ( int ) ), this , SLOT ( layerChanged () ) );
916
+ if ( !selectedLayers.contains ( QString::fromStdString ( modelLayer->getName () ) ) )
917
+ mMapNode ->getMap ()->removeModelLayer ( modelLayer );
913
918
}
914
919
915
- QStringList drapedLayers;
916
- QStringList selectedLayers = mDockWidget ->getSelectedLayers ();
917
-
918
920
Q_FOREACH ( const QString& layerId, selectedLayers )
919
921
{
920
922
QgsMapLayer* mapLayer = QgsMapLayerRegistry::instance ()->mapLayer ( layerId );
@@ -929,8 +931,8 @@ void GlobePlugin::updateLayers()
929
931
930
932
if ( layerConfig && ( layerConfig->renderingMode == QgsGlobeVectorLayerConfig::RenderingModeModelSimple || layerConfig->renderingMode == QgsGlobeVectorLayerConfig::RenderingModeModelAdvanced ) )
931
933
{
932
- mMapNode -> getMap ()-> removeModelLayer ( mMapNode ->getMap ()->getModelLayerByName ( mapLayer->id ().toStdString () ) );
933
- addModelLayer ( static_cast <QgsVectorLayer*>( mapLayer ), layerConfig );
934
+ if ( ! mMapNode ->getMap ()->getModelLayerByName ( mapLayer->id ().toStdString () ) )
935
+ addModelLayer ( static_cast <QgsVectorLayer*>( mapLayer ), layerConfig );
934
936
}
935
937
else
936
938
{
0 commit comments