Revision 329 2.0/trunk/org.gvsig.gvsig3d/org.gvsig.gvsig3d.lib/org.gvsig.gvsig3d.lib.impl/src/main/java/org/gvsig/gvsig3d/impl/map3d/MapContext3DImpl.java

View differences:

MapContext3DImpl.java
67 67
import org.gvsig.fmap.mapcontext.layers.operations.SingleLayer;
68 68
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
69 69
import org.gvsig.fmap.mapcontext.rendering.legend.ILegend;
70
import org.gvsig.fmap.mapcontext.rendering.legend.ISingleSymbolLegend;
70 71
import org.gvsig.fmap.mapcontext.rendering.legend.IVectorLegend;
71 72
import org.gvsig.fmap.mapcontext.rendering.legend.events.LegendChangedEvent;
72 73
import org.gvsig.fmap.mapcontext.rendering.legend.events.LegendClearEvent;
......
452 453
			// if (layer instanceof FLyrVect) {
453 454
			// Set a 3D Legend
454 455

  
455
			if (!(((FLyrVect) layer).getLegend().getDefaultSymbol() instanceof I3DSymbol)) {
456
				try {
457
					((FLyrVect) layer)
458
							.setLegend((IVectorLegend) MapContextLocator
459
									.getMapContextManager().getLegend(
460
											((FLyrVect) layer).getDataStore(),
461
											"project.document.view3d"));
462
				} catch (LegendLayerException e) {
463
					// TODO Auto-generated catch block
464
					e.printStackTrace();
465
				} catch (LocatorException e) {
466
					// TODO Auto-generated catch block
467
					e.printStackTrace();
468
				}
456
			 if (!(((FLyrVect) layer).getLegend().getDefaultSymbol()
457
			 instanceof I3DSymbol)) {
458
			try {
459
				((FLyrVect) layer).setLegend((IVectorLegend) MapContextLocator
460
						.getMapContextManager().getLegend(
461
								((FLyrVect) layer).getDataStore(),
462
								"project.document.view3d"));
463
			} catch (LegendLayerException e) {
464
				// TODO Auto-generated catch block
465
				e.printStackTrace();
466
			} catch (LocatorException e) {
467
				// TODO Auto-generated catch block
468
				e.printStackTrace();
469 469
			}
470
			}
470 471

  
471 472
			VectorLayer vlayer = new VectorLayer();
472 473
			vlayer.setEnabled(layer.isVisible());
......
700 701
	}
701 702

  
702 703
	public void invalidateVectorLayer(Layer3DProps props) {
704

  
703 705
		// TODO Auto-generated method stub
704 706
		// if (_terrain == null || _viewProjection == null)
705 707
		// return;
......
1067 1069
		if (rde.getLayer().getLayerType() == Layer.LayerType.TEXTURELAYER)
1068 1070
			ude = loadRasterData(layer, envelope, rde);
1069 1071

  
1070

  
1071
		if (rde.getLayer().getLayerType() == Layer.LayerType.VECTORLAYER)
1072
			{
1073
//			GeometryMarker3DSymbol n = new GeometryMarker3DSymbol();
1074
//			n.setPictureFileURL("/home/jtorres/.depman/share/osgVP/resources/marker.png");
1075
//			n.setSize(25.0f);
1076
			ude = loadVectorData(layer, envelope, rde, null);
1072
		if (rde.getLayer().getLayerType() == Layer.LayerType.VECTORLAYER) {
1073
			// NodeMarker3DSymbol n = new NodeMarker3DSymbol();
1074
			// n.setNodeFileURL("/home/jtorres/Projects/OpenSceneGraph/OpenSceneGraph-Data/dumptruck.osg");
1075
			// n.setSize(25.0f);
1076
			ude = loadVectorData(layer, envelope, rde);
1077 1077
		}
1078 1078
		if (rde.getLayer().getLayerType() == Layer.LayerType.HEIGHTFIELDLAYER)
1079 1079
			ude = loadElevationData(layer, envelope, rde);
......
1244 1244
	}
1245 1245

  
1246 1246
	private UpdateDataEvent loadVectorData(FLayer layer, Envelope envelope,
1247
			RequestDataEvent rde, I3DSymbol sy) {
1247
			RequestDataEvent rde) {
1248 1248

  
1249 1249
		System.out.println("vector data");
1250 1250
		UpdateDataEvent ude = new UpdateDataEvent();
1251 1251
		ude.copyDataFromRequest(rde);
1252 1252

  
1253 1253
		// Convenience casting, create a default 3D symbol
1254
		IVectorLegend legend = (IVectorLegend) ((FLyrVect) layer).getLegend();
1254
		ISingleSymbolLegend legend = (ISingleSymbolLegend) ((FLyrVect) layer).getLegend();
1255
		I3DSymbol sy= (I3DSymbol) legend.getDefaultSymbol();
1255 1256

  
1256
		if(sy==null) sy = (I3DSymbol) legend.getDefaultSymbol();
1257
		else legend.setDefaultSymbol(sy);
1258
		
1259
		//Hack for polylines and polygons to only render them rasterized
1260
		//till gvSIG architects solve geometries problem
1261
		if (sy instanceof IFillSymbol || sy instanceof ILineSymbol)
1262
		{
1263 1257

  
1258
		// Hack for polylines and polygons to only render them rasterized
1259
		// till gvSIG architects solve geometries problem
1260
		if (sy instanceof IFillSymbol || sy instanceof ILineSymbol) {
1261

  
1264 1262
			removeLayerToTerrain(layer);
1265 1263
			getLayer3DProps(layer).setType(Layer3DPropsImpl.layer3DImage);
1266 1264
			addLayerToTerrain(layer, true);
......
1278 1276
		vp.setDist1pixel(0.000000001);
1279 1277
		double scale = 0.5 * (layer.getMaxScale() + layer.getMinScale());
1280 1278

  
1281
		try {
1282
			layer.draw(null, null, vp, new MyCancel(), scale);
1283
		} catch (ReadException e) {
1284
			// TODO Auto-generated catch block
1285
			e.printStackTrace();
1279
		if (sy.getGeometry().getSize() == 0) {
1280
			try {
1281
				layer.draw(null, null, vp, new MyCancel(), scale);
1282
			} catch (ReadException e) {
1283
				// TODO Auto-generated catch block
1284
				e.printStackTrace();
1285
			}
1286 1286
		}
1287

  
1288 1287
		// OSG Layers
1289 1288
		DataStore ds = ((SingleLayer) layer).getDataStore();
1290 1289
		Node n = null;
......
1300 1299
		}
1301 1300
		// Vectorial layers
1302 1301
		else {
1303
			ISymbol3D sym = null;
1304
			try {
1305
				sym = Symbol3DFactory.getSymbol3D(sy);
1306
			} catch (NodeException e) {
1307
				// TODO Auto-generated catch block
1308
				e.printStackTrace();
1309
			}
1310
			// sm.setPointSize((float) sy.getSize());
1311
			n = sym.buildSceneGraph(sy.getGeometry());
1302
			n=this.buildVectors(sy);
1312 1303
		}
1313

  
1314 1304
		ude.setVectorData(n);
1315 1305

  
1316 1306
		return ude;
1317 1307
	}
1318 1308

  
1309
	private Node buildVectors(I3DSymbol symbol) {
1310
		Node n = null;
1311

  
1312
		ISymbol3D sym = null;
1313
		try {
1314
			sym = Symbol3DFactory.getSymbol3D(symbol);
1315
		} catch (NodeException e) {
1316
			// TODO Auto-generated catch block
1317
			e.printStackTrace();
1318
		}
1319
		// sm.setPointSize((float) sy.getSize());
1320
		n = sym.buildSceneGraph(symbol.getGeometry());
1321
		return n;
1322
	}
1323

  
1319 1324
	private UpdateDataEvent loadElevationData(FLayer layer, Envelope envelope,
1320 1325
			RequestDataEvent rde) {
1321 1326

  

Also available in: Unified diff