Parsing JSON de los mapas google DistanceMatrix api en android
Soy nuevo al desarrollo de androide y nuevo a JSON. Estoy usando la api de la matriz de distancia de google maps. Tengo la descarga JSON en un JSONObject correctamente creo (robé el código para hacerlo desde otro post). Sin embargo no puedo parse analizar el JSON correctamente. He estado trabajando en esto durante unos días y estoy completamente perplejo. Hago la siguiente llamada a google a continuación
https://maps.googleapis.com/maps/api/distancematrix/json?origins=1600%20pennsylvania%20avenue&destinations=1500%20college%20street&mode=driving&units=imperial
La salida es la siguiente:
- Error de compilación en Android Studio Al realizar un simple proyecto Google API de Google Maps API v2
- Mapa no funciona después de instalar desde la tienda de juegos en android
- Cómo ocultar el logotipo de Google de google maps mediante la adición de imagen superpuesta en google maps?
- Manejo de eventos táctiles en SurfaceView sobre Maps API v2
- Com.google.android.gms.maps.MapFragment: No se puede resolver el símbolo "maps"
{ "destination_addresses" : [ "1500 College Street, Beaumont, TX 77701, USA" ], "origin_addresses" : [ "1600 Pennsylvania Avenue, Hagerstown, MD 21742, USA" ], "rows" : [ { "elements" : [ { "distance" : { "text" : "1,306 mi", "value" : 2102536 }, "duration" : { "text" : "18 hours 48 mins", "value" : 67684 }, "status" : "OK" } ] } ], "status" : "OK" }
Yo he tratado:
1.
JSONArray jsonArray = jObject.getJSONArray("rows"); JSONArray routes = jsonArray.getJSONArray(0); stringBuilder.append(routes.getJSONObject(0).getString("text"));
2.
JSONArray jsonArray = jObject.getJSONArray("rows"); JSONObject routes = jsonArray.getJSONObject(0); stringBuilder.append(routes.getJSONObject("distance").getString("text"));
3.
JSONArray jsonArray = jObject.getJSONArray("elements"); stringBuilder.append(routes.getJSONObject(0).getString("text"));
He intentado más, pero a mí me parece que deberían funcionar. Parecía que para mí las filas es una matriz y los elementos es una matriz también. Por lo tanto, sería necesario obtener las filas fuera de la JSONObject original, a continuación, obtener la matriz de elementos fuera de la matriz de filas a continuación, obtener el objeto distancia de esa matriz, a continuación, finalmente obtener el valor de texto y añadirlo a la cadena constructor I Creado anteriormente. ¿Me he equivocado? Gracias de antemano por cualquier ayuda.
- Mapa de Google que muestra texto de derechos de autor adicional en algunos dispositivos
- Google Maps V2 mostrando una pantalla en blanco
- Obtener la dirección del mapa o la dirección de ubicación en Android
- Google Maps Android API v2 sólo admite dispositivos con OpenGL ES 2.0 y superior
- Metadatos de error de Google Play Services v13 en AndroidManifest
- cómo borrar todas las superposiciones de mapa o marcadores de google map en android?
- Obtener límites de mapa con Android Google Maps
- Google Map en dispositivos móviles
Aquí está lo que funcionó conmigo
//httpResponse is the output of google api JSONObject jsonRespRouteDistance = new JSONObject(httpResponse) .getJSONArray("rows") .getJSONObject(0) .getJSONArray ("elements") .getJSONObject(0) .getJSONObject("distance"); String distance = jsonRespRouteDistance.get("text").toString(); /* * For distance, below is only partial solution as the * output to string destination_addr will contain square brackets [] and double codes "" * Eg. [ "1600 Pennsylvania Avenue, Hagerstown, MD 21742, USA" ] * */ String destination_addr = new JSONObject(httpResponse) .get("destination_addresses") .toString();
[ACTUALIZAR]
Suponiendo que sólo tenemos una dirección de destino y no múltiples. Una pequeña manipulación de la secuencia nos consigue la secuencia de cadena limpia sin los códigos "y los corchetes []
StringBuilder stringBuilderDestinationAddr = new StringBuilder(); for (int i = 0; i < destination_addr.length(); i++) if (destination_addr.charAt(i) != '[' && destination_addr.charAt(i) != ']' && destination_addr.charAt(i) != '"') stringBuilderDestinationAddr.append(pickup_addr.destination_addr (i)); String strCleanDestination = stringBuilderDestinationAddr.toString();
- Analizar ASP.NET MVC devolvió la fecha utilizando la biblioteca Jackson JSON en Java
- ¿Cómo configurar el botón por un polígono de contorno? Androide