Esempio n. 1
0
bool QLandmarkFileHandlerGpx::writeGpx()
{
    QString nsGpx = "http://www.topografix.com/GPX/1/1";
    QString nsXsi = "http://www.w3.org/2001/XMLSchema-instance";

    if (!m_nsPrefix.isEmpty())
        m_ns = nsGpx;
    else
        m_ns = "";

    m_writer->writeStartDocument();

    if (m_nsPrefix.isEmpty())
        m_writer->writeDefaultNamespace(nsGpx);
    else {
        m_writer->writeNamespace(nsGpx, m_nsPrefix);
    }

    m_writer->writeStartElement(m_ns, "gpx");
    m_writer->writeAttribute("version", "1.1");
    m_writer->writeAttribute("creator", "Qt Mobility Location API");

    m_writer->writeNamespace(nsXsi, "xsi");
    m_writer->writeAttribute(nsXsi, "schemaLocation", "http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd");


    for (int i = 0; i < m_waypoints.size(); ++i) {
        if (m_cancel && (*m_cancel == true)) {
            m_errorCode = QLandmarkManager::CancelError;
            m_errorString = "Export of gpx file was canceled";
            return false;
        }

       if (!writeWaypoint(m_waypoints.at(i), "wpt"))
        return false;
    }

    for (int i = 0; i < m_routes.size(); ++i) {
        if (!writeRoute(m_routes.at(i)))
            return false;
    }

    for (int i = 0; i < m_tracks.size(); ++i) {
        if (!writeTrack(m_tracks.at(i)))
            return false;
    }
    m_writer->writeEndElement();
    m_writer->writeEndDocument();
    return true;
}
Esempio n. 2
0
/**
  *This function write route to .xml file.
  */
void GPSData::writeRouteXml(QIODevice *device, int round)
{
    xmlwriter.setDevice(device);

    //Write temp xml (routetemp.xml).
    if ( round == 0 )
    {
        xmlwriter.writeStartElement("Point");
        xmlwriter.writeAttribute("Latitude", QString::number(latitude));
        xmlwriter.writeAttribute("Longitude", QString::number(longitude));
        xmlwriter.writeAttribute("Altitude", QString::number(altitude));
        xmlwriter.writeAttribute("Speed", QString::number(speed));
        xmlwriter.writeEndElement();//Point
    }

    //Write final xml (route.xml).
    else if ( round == 1 )
    {
        xmlwriter.writeStartDocument();
        xmlwriter.writeStartElement("Route");
        xmlwriter.writeAttribute("Start-time", routeStartTime);
        xmlwriter.writeAttribute("Stop-time", routeStopTime);
        xmlwriter.writeAttribute("Points", QString::number(roundCounter));

        //Open temp xml and read points
        QFile tempFile("routetemp.xml");
        if (!tempFile.open(QIODevice::ReadOnly | QIODevice::Text))
            return;
        QTextStream readRoute(&tempFile);
        QTextStream writeRoute(device);
        writeRoute << readRoute.readLine();
        tempFile.close();//Close temp xml

        xmlwriter.writeEndElement();//Route
        xmlwriter.writeEndDocument();     
    }
}