Shpere
I am not sure why it does not work. I get a class cast exception:
java.io.IOException: java.lang.ClassCastException:
de.micromata.opengis.kml.v_2_2_0.Document cannot be cast to
de.micromata.opengis.kml.v_2_2_0.Placemark
Here is all my code:
I get a class cast exception on this line:
Point point = (Point) placemark.getGeometry();
import java.io.File;
import java.io.IOException;
import java.util.List;
import de.micromata.opengis.kml.v_2_2_0.Kml;
import de.micromata.opengis.kml.v_2_2_0.KmlFactory;
import de.micromata.opengis.kml.v_2_2_0.Placemark;
import de.micromata.opengis.kml.v_2_2_0.Point;
import de.micromata.opengis.kml.v_2_2_0.Coordinate;
import de.micromata.opengis.kml.v_2_2_0.Document;
import de.micromata.opengis.kml.v_2_2_0.Geometry;
public final class KMLTrackFactory extends TrackFactory<KMLTrackConfig>
{
public KMLTrackFactory()
{
super("KML", KMLTrackConfig.class);
}
@Override
public PointListTrack create(KMLTrackConfig config) throws IOException
{
try
{
final Kml kml = Kml.unmarshal(new File(config.getTrackFile()));
return createFromGpx(config.getName()
, kml, config.getPointInterval());
} catch (Exception ex)
{
throw new IOException(ex);
}
}
PointListTrack createFromGpx(String name, Kml kml, long interval) throws IOException
{
ImmutableSortedMap.Builder<Long, Position> positions = ImmutableSortedMap.naturalOrder();
long first_time = -1;
long offset_time = 0;
final Placemark placemark = (Placemark) kml.getFeature();
Point point = (Point) placemark.getGeometry();
List<Coordinate> coordinates = point.getCoordinates();
for (Coordinate c : coordinates)
{
System.out.println(c.getLatitude());
System.out.println(c.getLongitude());
System.out.println(c.getAltitude());
Position pos = Position.createPosition(c.getLatitude(), c.getLongitude(), c.getAltitude());
positions.put(offset_time, pos);
}
return new PointListTrack(name, positions.build());
}
}
Thanks again.
Brian