PDA

View Full Version : [Api Google Maps] Il modo più semplice ed immediato per ottenere distanza percorso


luxorl
05-07-2010, 17:00
Ciao, sto programmando un'applicazione per cellulari in J2ME e mi servirebbe, date le coordinate del punto di partenza e del punto di arrivo, ottenere la distanza totale fra questi punti del percorso a piedi.

Ho setacciato un po' le Api di Google Maps (http://code.google.com/intl/it-IT/apis/maps/index.html) e ho trovato le Google Directions API che restituiscono tutto il percorso (tipo navigatore) in JSON.

Dovrei quindi prendere un parser json ed estrarre le singole distanze dei waypoints e poi sommarle.

Che voi sappiate c'è qualcosa di più immediato e semplice?

Grazie :)

kk3z
05-07-2010, 18:03
Esempio di google:
http://code.google.com/apis/maps/documentation/directions/#DirectionsResponses

{
"status": "OK",
"routes": [ {
"summary": "I-40 W",
"legs": [ {
"steps": [ {
"travel_mode": "DRIVING",
"start_location": {
"lat": 41.8507300,
"lng": -87.6512600
},
"end_location": {
"lat": 41.8525800,
"lng": -87.6514100
},
"polyline": {
"points": "a~l~Fjk~uOwHJy@P",
"levels": "B?B"
},
"duration": {
"value": 19,
"text": "1 min"
},
"html_instructions": "Head \u003cb\u003enorth\u003c/b\u003e on \u003cb\u003eS Morgan St\u003c/b\u003e toward \u003cb\u003eW Cermak Rd\u003c/b\u003e",
"distance": {
"value": 207,
"text": "0.1 mi"
}
},
...
... additional steps of this leg
...
... additional legs of this route
"duration": {
"value": 74384,
"text": "20 hours 40 mins"
},
"distance": {
"value": 2137146,
"text": "1,328 mi"
},
"start_location": {
"lat": 35.4675602,
"lng": -97.5164276
},
"end_location": {
"lat": 34.0522342,
"lng": -118.2436849
},
"start_address": "Oklahoma City, OK, USA",
"end_address": "Los Angeles, CA, USA"
} ],
"copyrights": "Map data ©2010 Google, Sanborn",
"overview_polyline": {
"points": "a~l~Fjk~uOnzh@vlbBtc~@tsE`vnApw{A`dw@~w\\|tNtqf@l{Yd_Fblh@rxo@b}@xxSfytAblk@xxaBeJxlcBb~t@zbh@jc|Bx}C`rv@rw|@rlhA~dVzeo@vrSnc}Axf]fjz@xfFbw~@dz{A~d{A|zOxbrBbdUvpo@`cFp~xBc`Hk@nurDznmFfwMbwz@bbl@lq~@loPpxq@bw_@v|{CbtY~jGqeMb{iF|n\\~mbDzeVh_Wr|Efc\\x`Ij{kE}mAb~uF{cNd}xBjp]fulBiwJpgg@|kHntyArpb@bijCk_Kv~eGyqTj_|@`uV`k|DcsNdwxAott@r}q@_gc@nu`CnvHx`k@dse@j|p@zpiAp|gEicy@`omFvaErfo@igQxnlApqGze~AsyRzrjAb__@ftyB}pIlo_BflmA~yQftNboWzoAlzp@mz`@|}_@fda@jakEitAn{fB_a]lexClshBtmqAdmY_hLxiZd~XtaBndgC",
"levels": "BBBAAAAABAABAAAAAABBAAABBAAAABBAAABABAAABABBAABAABAAAABABABABBABAABB"
},
"warnings": [ ],
"waypoint_order": [ 0, 1 ]
} ]
}

c'è distance nel json...

luxorl
05-07-2010, 18:08
GDirections.getDistance ritorna la distanza in metri:

http://code.google.com/apis/maps/documentation/javascript/v2/reference.html#GDirections.getDistance

Non è chiaro se è la distanza del percorso o la distanza diretta...

EDIT: no è la distanza seguendo il percorso, per la distanza diretta c'è GLatLng.distanceFrom()

Grazie! Ora gli do un'occhiata.

luxorl
05-07-2010, 18:12
Scusate la banalità, come integro queste Google Maps JavaScript in un progetto in J2ME? Ci sono dei sorgenti da scaricare?

luxorl
05-07-2010, 18:16
Esempio di google:
http://code.google.com/apis/maps/documentation/directions/#DirectionsResponses

c'è distance nel json...

Ho visto, ma pare non ci sia il "distance" totale.
In più in questo modo devo passare per un parser json...
Chiedevo appunto se esisteva qualcosa di più semplice

kk3z
06-07-2010, 10:16
Ci sono due modi, o usi javascript o usi le richieste via http che restituiscono json.
Puoi anche fare uno script intermedio su un tuo server che fa la richiesta, fa il parse del json e ti restituisce la distanza totale sommando le "distances" dei vari steps

luxorl
06-07-2010, 15:27
Alla fine sto interrogando via http Google facendo però restituire XML invece di JSON.
Almeno sfrutto il parser di javax.xml invece di dover importare librerie esterne non testate

luxorl
06-07-2010, 15:31
E sottolineo anche che nella risposta XML pare ci sia il campo distanza totale:

<distance>
<value>18338</value>
<text>18.3 km</text>
</distance>

Quanto tempo perso con JSON. Perché Google Maps suggerisce di usare JSON? Che vantaggi ha rispetto a XML?