2010-11-29 9 views
0

Je travaille dans un projet qui analyse et écrit un fichier kml et stocke dans sd card, mais j'ai un problème, pour google maps trace le chemin dont j'ai besoin que les coordonnées sont tous ensemble, et mon Activity il suffit de faire comme cette sortie kml:Kml Analyse dans Android

<?xml version="1.0"?> 
<kml xmlns="http://www.opengis.net/kml/2.2"> 
    <Placemark> 
     <name>Untitled Path</name> 
     <Style id="RedLine"> 
      <LineStyle> 
       <color>7f0000ff</color> 
       <width>4</width> 
      </LineStyle> 
     </Style> 
     <styleUrl>#RedLine</styleUrl> 
     <LineString> 
      <tessellate>1</tessellate> 
      <altitudeMode>absolute</altitudeMode> 
      <coordinates> 
        -7.178449630737305,41.48063600063324,274.0 
      </coordinates> 
     </LineString> 
    </Placemark> 
    <Placemark> 
     <name>Untitled Path</name> 
     <Style id="RedLine"> 
      <LineStyle> 
        <color>7f0000ff</color> 
        <width>4</width> 
      </LineStyle> 
     </Style> 
     <styleUrl>#RedLine</styleUrl> 
     <LineString> 
      <tessellate>1</tessellate> 
      <altitudeMode>absolute</altitudeMode> 
      <coordinates> 
       -7.178449630737305,41.48063600063324,274.0 
      </coordinates> 
     </LineString> 
    </Placemark> 
</kml> 

Et Ma principale classe:

private void WriteToFile(Location loc) { 
    if (!logToGpx && !logToKml) { 
     return; 
    } 
    try { 
     boolean brandNewFile = false; 
     // if (root.canWrite()){ 
     // File gpxFolder = new File("/sdcard/GPSLogger"); 
     File gpxFolder = new File(Environment.getExternalStorageDirectory(), "GPSLogger"); 
      Log.i("MAIN", String.valueOf(gpxFolder.canWrite())); 
      if (!gpxFolder.exists()) { 
       gpxFolder.mkdirs(); 
       brandNewFile = true; 
      } 
      if (logToGpx) { 
       WriteToGpxFile(loc, gpxFolder, brandNewFile); 
      } 
      if (logToKml) { 
       WriteToKmlFile(loc, gpxFolder, brandNewFile); 
      } 
    } catch (Exception e) { 
     Log.e("Main", "Nao foi possivel criar o ficheiro " + e.getMessage()); 
     SetStatus("Nao e possivel escrever no ficheiro. " + e.getMessage()); 
    } 
} 

private void WriteToKmlFile(Location loc, File gpxFolder, boolean brandNewFile) { 
    try { 
     File kmlFile = new File(gpxFolder.getPath(), currentFileName + ".kml"); 
     if (!kmlFile.exists()) { 
       kmlFile.createNewFile(); 
       brandNewFile = true; 
     } 
     Date now = new Date(); 
     //SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); 
     //String dateTimeString = sdf.format(now); 
     if (brandNewFile) { 
       FileOutputStream initialWriter = new FileOutputStream(kmlFile, true); 
       BufferedOutputStream initialOutput = new BufferedOutputStream(initialWriter); 
       String initialXml = "<?xml version=\"1.0\"?>"+ "<kml xmlns=\"http://www.opengis.net/kml/2.2\">" + "</kml>"; 
       initialOutput.write(initialXml.getBytes()); 
       // initialOutput.write("\n".getBytes()); 
       initialOutput.flush(); 
       initialOutput.close(); 
     } 

     long startPosition = kmlFile.length() - 6; 

     String placemark = "<Placemark><name>" + now.toLocaleString() 
      + "</name><description>" + now.toLocaleString() 
      + "</description>" + "<Point><coordinates>" 
      + String.valueOf(loc.getLongitude()) + "," 
      + String.valueOf(loc.getLatitude()) + "," 
      + String.valueOf(loc.getAltitude()) 
      + "</coordinates></Point></Placemark></kml>"; 

     RandomAccessFile raf = new RandomAccessFile(kmlFile, "rw"); 
     raf.seek(startPosition); 
     raf.write(placemark.getBytes()); 
     raf.close(); 

     } catch (IOException e) { 
      Log.e("Main", "Error in writting " + e.getMessage()); 
      SetStatus("Error in writting. " + e.getMessage()); 
     } 
} 

ce que je fais mal?

Répondre

1

Je ne sais pas ce que vous entendez

i besoin que les coordonnées sont tous ensemble

Les coordonnées sont tous ensemble dans la balise <coordinates>, 3 valeurs par point (latitude, longitude, la taille).

Voici un exemple complet comment lire le fichier kml et tracer le chemin carte sur cette base:

How to draw a path on a map using kml file?

0

Pour dessiner un chemin, Mettez tous les points dans le même Placemark et LineString Est-ce que vous voulez faire? La question n'est pas très claire.

par exemple.

<PlaceMark> 
... 
<LineString> 
    ... 
    <coordinates> 
    -7.178449630737305,41.48063600063324,274.0 
    ... append other points here .... 
    </coordinates> 
</LineString> 
</PlaceMark>