]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - tim/prune/load/xml/KmlHandler.java
Version 8, September 2009
[GpsPrune.git] / tim / prune / load / xml / KmlHandler.java
index 09706390c03b59506781f11da5570f3f8d051bd9..787dd0bd1cfc8d1df08cdd3caeb74c471a497bcb 100644 (file)
@@ -17,7 +17,7 @@ public class KmlHandler extends XmlHandler
        private boolean _insideCoordinates = false;
        private String _name = null;
        private StringBuffer _coordinates = null;
-       private ArrayList _pointList = new ArrayList();
+       private ArrayList<String[]> _pointList = new ArrayList<String[]>();
 
 
        /**
@@ -86,7 +86,7 @@ public class KmlHandler extends XmlHandler
        private void processPlacemark()
        {
                if (_coordinates == null) return;
-               String allCoords = _coordinates.toString();
+               String allCoords = _coordinates.toString().trim();
                String[] coordArray = allCoords.split("[ \n]");
                int numPoints = coordArray.length;
                if (numPoints == 1)
@@ -97,9 +97,16 @@ public class KmlHandler extends XmlHandler
                else if (numPoints > 1)
                {
                        // Add each of the unnamed track points to list
+                       boolean firstPoint = true;
                        for (int p=0; p<numPoints; p++)
                        {
-                               _pointList.add(makeStringArray(coordArray[p], null));
+                               if (coordArray[p] != null && coordArray[p].trim().length()>3)
+                               {
+                                       String[] pointArray = makeStringArray(coordArray[p], null);
+                                       if (firstPoint) {pointArray[4] = "1";} // start of segment flag
+                                       firstPoint = false;
+                                       _pointList.add(pointArray);
+                               }
                        }
                }
        }
@@ -113,7 +120,7 @@ public class KmlHandler extends XmlHandler
         */
        private static String[] makeStringArray(String inCoordinates, String inName)
        {
-               String[] result = new String[4];
+               String[] result = new String[5];
                String[] values = inCoordinates.split(",");
                if (values.length == 3) {System.arraycopy(values, 0, result, 0, 3);}
                result[3] = inName;
@@ -126,7 +133,7 @@ public class KmlHandler extends XmlHandler
         */
        public Field[] getFieldArray()
        {
-               final Field[] fields = {Field.LONGITUDE, Field.LATITUDE, Field.ALTITUDE, Field.WAYPT_NAME};
+               final Field[] fields = {Field.LONGITUDE, Field.LATITUDE, Field.ALTITUDE, Field.WAYPT_NAME, Field.NEW_SEGMENT};
                return fields;
        }
 
@@ -142,7 +149,7 @@ public class KmlHandler extends XmlHandler
                String[][] result = new String[numPoints][];
                for (int i=0; i<numPoints; i++)
                {
-                       result[i] = (String[]) _pointList.get(i);
+                       result[i] = _pointList.get(i);
                }
                return result;
        }