Ejemplo n.º 1
0
 private static void writeExtensions(XmlSerializer serializer, GPXExtensions p)
     throws IOException {
   if (!p.getExtensionsToRead().isEmpty()) {
     serializer.startTag(null, "extensions");
     for (Map.Entry<String, String> s : p.getExtensionsToRead().entrySet()) {
       writeNotNullText(serializer, s.getKey(), s.getValue());
     }
     serializer.endTag(null, "extensions");
   }
 }
Ejemplo n.º 2
0
  public static GPXFile loadGPXFile(Context ctx, InputStream f, boolean convertCloudmadeSource) {
    GPXFile res = new GPXFile();
    SimpleDateFormat format = new SimpleDateFormat(GPX_TIME_FORMAT);
    format.setTimeZone(TimeZone.getTimeZone("UTC"));
    try {
      XmlPullParser parser = Xml.newPullParser();
      parser.setInput(new InputStreamReader(f)); // $NON-NLS-1$
      Stack<GPXExtensions> parserState = new Stack<GPXExtensions>();
      parserState.push(res);
      int tok;
      while ((tok = parser.next()) != XmlPullParser.END_DOCUMENT) {
        if (tok == XmlPullParser.START_TAG) {
          GPXExtensions element = parserState.peek();
          element.parse(parser, parserState, format);
        } else if (tok == XmlPullParser.END_TAG) {
          GPXExtensions parse = parserState.peek();
          String tag = parser.getName();
          if (!parse.parseEnd(tag, parserState)) {
            log.debug("Bad ending tag: " + tag + " for element " + parse.getClass());
          }
        }
      }
      if (convertCloudmadeSource && res.isCloudmadeRouteFile()) {
        Track tk = new Track();
        res.tracks.add(tk);
        TrkSegment segment = new TrkSegment();
        tk.segments.add(segment);

        for (WptPt wp : res.points) {
          segment.points.add(wp);
        }
        res.points.clear();
      }
    } catch (XmlPullParserException e) {
      log.error("Error reading gpx", e); // $NON-NLS-1$
      res.warning = ctx.getString(R.string.error_reading_gpx);
    } catch (IOException e) {
      log.error("Error reading gpx", e); // $NON-NLS-1$
      res.warning = ctx.getString(R.string.error_reading_gpx);
    }

    return res;
  }
Ejemplo n.º 3
0
 @Override
 public void parse(
     XmlPullParser parser, Stack<GPXExtensions> parserState, SimpleDateFormat format)
     throws XmlPullParserException, IOException {
   super.parse(parser, parserState, format);
   if (parser.getName().equals("trkpt")) {
     WptPt wptPt = parseWptAttributes(parser);
     points.add(wptPt);
     parserState.push(wptPt);
   }
 }
Ejemplo n.º 4
0
 @Override
 public void parse(
     XmlPullParser parser, Stack<GPXExtensions> parserState, SimpleDateFormat format)
     throws XmlPullParserException, IOException {
   super.parse(parser, parserState, format);
   String tag = parser.getName();
   if (tag.equals("name")) {
     name = readText(parser, "name");
   } else if (tag.equals("desc")) {
     desc = readText(parser, "desc");
   } else if (tag.equals("rtept")) {
     WptPt wptPt = parseWptAttributes(parser);
     points.add(wptPt);
     parserState.push(wptPt);
   }
 }
Ejemplo n.º 5
0
 @Override
 public void parse(
     XmlPullParser parser, Stack<GPXExtensions> parserState, SimpleDateFormat format)
     throws XmlPullParserException, IOException {
   super.parse(parser, parserState, format);
   String tag = parser.getName();
   if (tag.equals("name")) {
     name = readText(parser, "name");
   } else if (tag.equals("desc")) {
     desc = readText(parser, "desc");
   } else if (tag.equals("trkseg")) {
     TrkSegment trkSeg = new TrkSegment();
     segments.add(trkSeg);
     parserState.push(trkSeg);
   }
 }
Ejemplo n.º 6
0
 @Override
 public void parse(
     XmlPullParser parser, Stack<GPXExtensions> parserState, SimpleDateFormat format)
     throws XmlPullParserException, IOException {
   super.parse(parser, parserState, format);
   String tag = parser.getName();
   if (tag.equals("name")) {
     name = readText(parser, "name");
   } else if (tag.equals("category")) {
     category = readText(parser, "category");
   } else if (tag.equals("desc")) {
     desc = readText(parser, "desc");
   } else if (tag.equals("ele")) {
     String text = readText(parser, "ele");
     if (text != null) {
       try {
         ele = Float.parseFloat(text);
       } catch (NumberFormatException e) {
       }
     }
   } else if (tag.equals("hdop")) {
     String text = readText(parser, "hdop");
     if (text != null) {
       try {
         hdop = Float.parseFloat(text);
       } catch (NumberFormatException e) {
       }
     }
   } else if (tag.equals("time")) {
     String text = readText(parser, "time");
     if (text != null) {
       try {
         time = format.parse(text).getTime();
       } catch (ParseException e) {
       }
     }
   } else if (tag.equals("speed") && extensionReadMode) {
     try {
       speed = Float.parseFloat(getExtensionsToWrite().get(tag));
     } catch (NumberFormatException e) {
     }
   }
 }
Ejemplo n.º 7
0
 @Override
 public void parse(
     XmlPullParser parser, Stack<GPXExtensions> parserState, SimpleDateFormat format)
     throws XmlPullParserException, IOException {
   super.parse(parser, parserState, format);
   String tag = parser.getName();
   if (tag.equals("gpx")) {
     this.author = parser.getAttributeValue("", "creator");
   } else if (tag.equals("trk")) {
     Track track = new Track();
     tracks.add(track);
     parserState.push(track);
   } else if (tag.equals("rte")) {
     Route route = new Route();
     routes.add(route);
     parserState.push(route);
   } else if (tag.equals("wpt")) {
     WptPt wptPt = parseWptAttributes(parser);
     points.add(wptPt);
     parserState.push(wptPt);
   }
 }