/* Copyright (C) 2001, 2006 United States Government as represented by the Administrator of the National Aeronautics and Space Administration. All Rights Reserved. */ package gov.nasa.worldwind.examples; import gov.nasa.worldwind.avlist.*; import gov.nasa.worldwind.event.*; import gov.nasa.worldwind.formats.gpx.*; import gov.nasa.worldwind.layers.*; import gov.nasa.worldwind.pick.*; import gov.nasa.worldwind.render.*; import gov.nasa.worldwind.tracks.*; import org.xml.sax.*; import javax.xml.parsers.*; import java.io.*; import java.util.*; /** * @author tag * @version $Id: Tracks.java 5274 2008-05-02 00:42:42Z tgaskins $ */ public class Tracks extends ApplicationTemplate { private static final String TRACK_FILE = "demodata/tuolumne.gpx"; private static class AppFrame extends ApplicationTemplate.AppFrame { public AppFrame() { super(true, true, false); TrackMarkerLayer layer = this.buildTracksLayer(); layer.setMaterial(Material.WHITE); // layer.setMarkerShape("Cylinder"); insertBeforeCompass(this.getWwd(), layer); this.getLayerPanel().update(this.getWwd()); this.getWwd().addSelectListener(new SelectListener() { public void selected(SelectEvent event) { if (event.getTopObject() != null) { if (event.getTopPickedObject().getParentLayer() instanceof TrackLayer) { PickedObject po = event.getTopPickedObject(); System.out.printf("Track position %s, %s\n", po.getValue(AVKey.PICKED_OBJECT_ID).toString(), po.getPosition()); } } } }); } private TrackMarkerLayer buildTracksLayer() { try { GpxReader reader = new GpxReader(); reader.readFile(TRACK_FILE); List<Track> tracks = reader.getTracks(); TrackMarkerLayer layer = new TrackMarkerLayer(tracks); layer.setOverrideElevation(true); layer.setElevation(0); return layer; } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } } public static void main(String[] args) { ApplicationTemplate.start("World Wind Tracks", AppFrame.class); } }