Commit eb5767f3 authored by Christopher Reis's avatar Christopher Reis

Reworked how Placemarks are added

parent 7e3dd6df
......@@ -10,14 +10,19 @@ import gov.nasa.worldwind.BasicModel;
import gov.nasa.worldwind.WorldWind;
import gov.nasa.worldwind.avlist.AVKey;
import gov.nasa.worldwind.awt.WorldWindowGLCanvas;
import gov.nasa.worldwind.geom.LatLon;
import gov.nasa.worldwind.geom.Position;
import gov.nasa.worldwind.layers.Layer;
import gov.nasa.worldwind.layers.LayerList;
import gov.nasa.worldwind.layers.RenderableLayer;
import gov.nasa.worldwind.render.BasicShapeAttributes;
import gov.nasa.worldwind.render.Cone;
import gov.nasa.worldwind.render.Material;
import gov.nasa.worldwind.render.Offset;
import gov.nasa.worldwind.render.PointPlacemark;
import gov.nasa.worldwind.render.PointPlacemarkAttributes;
import gov.nasa.worldwind.render.Renderable;
import gov.nasa.worldwind.render.ShapeAttributes;
import satellite.satPosition;
public class view3D extends JInternalFrame{
......@@ -84,27 +89,39 @@ public class view3D extends JInternalFrame{
public void addTrack(String name, Double lat, Double lon, Double alt){
List<Renderable> rList = new ArrayList<Renderable>();
Iterable<Renderable> iter = layer.getRenderables();
while(iter.iterator().hasNext()){
System.out.println("Iterator ");
Renderable rend = iter.iterator().next();
if(rend instanceof PointPlacemark){
PointPlacemark delp = (PointPlacemark)rend;
System.out.println(delp.getLabelText());
if(delp.getLabelText().equals(name)){
delp.setPosition(Position.fromDegrees(lat, lon, alt* 1000));
System.out.println(lat + " " + lon + " " + alt*1000);
for(int i = 0; i<layer.getNumRenderables();i++){
if(iter.iterator().next() instanceof PointPlacemark){
PointPlacemark pp = (PointPlacemark) rList.get(i);
if(pp.getLabelText().equals(name)){
pp.setPosition(Position.fromDegrees(lat, lon, alt *1000));
System.out.println(name + " updated");
wwd.redraw();
return;
}else{
return;
}
} else {
System.out.println("Not a PP");
}
}
PointPlacemark pp = new PointPlacemark(Position.fromDegrees(lat, lon, alt *1000 ));
// while(iter.iterator().hasNext()){
// System.out.println("Iterator ");
// Renderable rend = iter.iterator().next();
// if(rend instanceof PointPlacemark){
// PointPlacemark delp = (PointPlacemark)rend;
// System.out.println(delp.getLabelText());
// if(delp.getLabelText().equals(name)){
// delp.setPosition(Position.fromDegrees(lat, lon, alt* 1000));
// System.out.println(lat + " " + lon + " " + alt*1000);
// wwd.redraw();
// return;
// }else{
// return;
// }
// } else {
// System.out.println("Not a PP");
// }
// }
//Satellite Placemark
PointPlacemark pp = new PointPlacemark(Position.fromDegrees(lat, lon, alt*1000));
pp.setLabelText(name);
pp.setValue(AVKey.DISPLAY_NAME, "Label, Semi-transparent, Audio icon");
pp.setLineEnabled(false);
......@@ -113,9 +130,27 @@ public class view3D extends JInternalFrame{
attrsP.setImageAddress("satellite.png");
//attrsP.setImageColor(new Color(1f, 1f, 1f, 0.6f));
attrsP.setScale(0.1);
attrsP.setImageOffset(new Offset(175d,175d,AVKey.PIXELS, AVKey.PIXELS));
//attrsP.setImageOffset(new Offset(175d,175d,AVKey.PIXELS, AVKey.PIXELS));
pp.setAttributes(attrsP);
layer.addRenderable(pp);
// Create and set an attribute bundle.
ShapeAttributes attrs = new BasicShapeAttributes();
attrs.setInteriorMaterial(Material.YELLOW);
attrs.setInteriorOpacity(0.03);
attrs.setEnableLighting(true);
attrs.setOutlineMaterial(Material.RED);
attrs.setOutlineWidth(2d);
attrs.setDrawInterior(true);
attrs.setDrawOutline(false);
// Cone with a texture, using Cone(position, height, radius) constructor
Cone cone9 = new Cone(Position.fromDegrees(lat, lon), alt * 3000, 600000);
cone9.setAltitudeMode(WorldWind.RELATIVE_TO_GROUND);
cone9.setAttributes(attrs);
cone9.setVisible(true);
cone9.setValue(AVKey.DISPLAY_NAME, "Cone with a texture");
layer.addRenderable(cone9);
// Add the layer to the model.
wwd.getModel().getLayers().add(layer);
......@@ -125,6 +160,7 @@ public class view3D extends JInternalFrame{
public void addSatellite(List<satPosition> positions){
System.out.println("Size " + positions.size());
//layer.dispose();
for(int i = 0; i<positions.size();i++){
addTrack(positions.get(i).getName(),positions.get(i).getLat(),positions.get(i).getLon(),positions.get(i).getAlt());
System.out.println(positions.get(i).getName()+ " Added!");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment