En ce moment j'utilise ce code pour demander des directions de google maps d'une adresse à un autre, alors je le dessine simplement sur un mapview de son GeometryCollection. Mais cela ne suffit pas, je dois aussi extraire la durée totale attendue du kml. quelqu'un peut-il donner un petit exemple de code pour m'aider? merciandroid obtenir la durée de maps.google.com directions
StringBuilder urlString = new StringBuilder();
urlString.append("http://maps.google.com/maps?f=d&hl=en");
urlString.append("&saddr=");//from
urlString.append(Double.toString((double)src.getLatitudeE6()/1.0E6));
urlString.append(",");
urlString.append(Double.toString((double)src.getLongitudeE6()/1.0E6));
urlString.append("&daddr=");//to
urlString.append(Double.toString((double)dest.getLatitudeE6()/1.0E6));
urlString.append(",");
urlString.append(Double.toString((double)dest.getLongitudeE6()/1.0E6));
urlString.append("&ie=UTF8&0&om=0&output=kml");
//Log.d("xxx","URL="+urlString.toString());
// get the kml (XML) doc. And parse it to get the coordinates(direction route).
Document doc = null;
HttpURLConnection urlConnection= null;
URL url = null;
try
{
url = new URL(urlString.toString());
urlConnection=(HttpURLConnection)url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setDoOutput(true);
urlConnection.setDoInput(true);
urlConnection.connect();
dbf = DocumentBuilderFactory.newInstance();
db = dbf.newDocumentBuilder();
doc = db.parse(urlConnection.getInputStream());
if(doc.getElementsByTagName("GeometryCollection").getLength()>0)
{
//String path = doc.getElementsByTagName("GeometryCollection").item(0).getFirstChild().getFirstChild().getNodeName();
String path = doc.getElementsByTagName("GeometryCollection").item(0).getFirstChild().getFirstChild().getFirstChild().getNodeValue() ;
//Log.d("xxx","path="+ path);
String[] pairs = path.split(" ");
String[] lngLat = pairs[0].split(","); // lngLat[0]=longitude lngLat[1]=latitude lngLat[2]=height
// src
GeoPoint startGP = new GeoPoint((int)(Double.parseDouble(lngLat[1])*1E6),(int)(Double.parseDouble(lngLat[0])*1E6));
mMapView01.getOverlays().add(new MyOverLay(startGP,startGP,1));
GeoPoint gp1;
GeoPoint gp2 = startGP;
for(int i=1;i<pairs.length;i++) // the last one would be crash
{
lngLat = pairs[i].split(",");
gp1 = gp2;
// watch out! For GeoPoint, first:latitude, second:longitude
gp2 = new GeoPoint((int)(Double.parseDouble(lngLat[1])*1E6),(int)(Double.parseDouble(lngLat[0])*1E6));
mMapView01.getOverlays().add(new MyOverLay(gp1,gp2,2,color));
//Log.d("xxx","pair:" + pairs[i]);
}
mMapView01.getOverlays().add(new MyOverLay(dest,dest, 3)); // use the default color
}
}catch (MalformedURLException e){
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}catch (SAXException e){
e.printStackTrace();
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
}
ok je lis cette page http://code.google.com/apis/maps/documentation/directions/#XML qui contient l'explication ce que je ne sais comment pas que ce soit d'interpréter ce fichier: par cela je veux dire que pour le kml il y a une balise GeometryCollection contenant l'itinéraire savoir comment dessiner dans la carte. et ce qui est cette ** Chaîne unreadble humaine ** ... overview_polyline> grâce –
urobo
Mis à jour pour montrer par exemple. –