Java tutorial
package com.bytebybyte.mapquest.geocoding.service.standard; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; import org.junit.Assert; import org.junit.Test; import org.springframework.web.client.RestTemplate; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; /** * Ref: http://developer.mapquest.com/web/products/open/geocoding-service * JSON: http://stackoverflow.com/questions/5490789/json-parsing-using-gson-for-java */ public class MapQuestTest { private static final String ADDRESS_URL = "http://open.mapquestapi.com/nominatim/v1/search.php?format=json&q="; //private static final String API_KEY = "Kmjtd|luua2qu7n9,7a=o5-lzbgq"; @Test public void getGoogleMap() { String API_KEY = "AIzaSyAv9WhULXF0Ri_C19NGyV2-rCUh50nMNA4"; RestTemplate restTemplate = new RestTemplate(); String url = "https://maps.googleapis.com/maps/api/geocode/json?address=11480 Sunset Hills Road, Reston, VA 20190&key=" + API_KEY; String result = restTemplate.getForObject(url, String.class); System.out.println("Result : " + result); /*HttpEntity<String> newentity = new HttpEntity<String>(headers); ResponseEntity<String> response = restTemplate.exchange(url, HttpMethod.GET, newentity, String.class); System.out.println("Response : " + response);*/ JsonElement jelement = new JsonParser().parse(result); JsonObject jobject = jelement.getAsJsonObject(); JsonArray jarray = jobject.getAsJsonArray("results"); jobject = jarray.get(0).getAsJsonObject(); System.out.println(jobject.get("geometry")); JsonElement je = new JsonParser().parse(jobject.get("geometry").toString()); JsonObject jo = je.getAsJsonObject(); jo = jo.getAsJsonObject("location"); System.out.println("Lat : " + jo.get("lat")); System.out.println("Lon : " + jo.get("lng")); } @Test public void testgetLatAndLon2() throws UnsupportedEncodingException { RestTemplate restTemplate = new RestTemplate(); String location = "Wokingham, UK"; String url = ADDRESS_URL + location; String result = restTemplate.getForObject(url, String.class); System.out.println("Result : " + result); JsonElement jelement = new JsonParser().parse(result); JsonArray jsonArray = jelement.getAsJsonArray(); Double[] position = null; List<Double[]> positions = new ArrayList<Double[]>(); for (int i = 0; i < jsonArray.size(); i++) { JsonObject jo = jsonArray.get(i).getAsJsonObject(); String lat = removeDoubleQuotes(jo.get("lat").toString()); String lon = removeDoubleQuotes(jo.get("lon").toString()); position = new Double[] { Double.parseDouble(lat), Double.parseDouble(lon) }; positions.add(position); } for (Double[] doubles : positions) { System.out.println("----------------------"); System.out.println("Lat : [" + doubles[0] + "[, Lon :[" + doubles[1] + "]"); } } //Basic Sample Search @Test public void testGetBasicSearch() { RestTemplate restTemplate = new RestTemplate(); String ADDRESS = "http://open.mapquestapi.com/nominatim/v1/search.php?format=json&"; String callback = "q=windsor+[castle]&addressdetails=1&limit=3&"; String viewbox = "viewbox=-1.99%2C52.02%2C0.78%2C50.94&exclude_place_ids=41697"; String url = ADDRESS + callback + viewbox; String result = restTemplate.getForObject(url, String.class); System.out.println("Result : " + result); JsonElement jelement = new JsonParser().parse(result); JsonArray jsonArray = jelement.getAsJsonArray(); JsonObject jo = jsonArray.get(0).getAsJsonObject(); System.out.println("Place Id : " + jo.get("place_id")); System.out.println("License : " + jo.get("licence")); System.out.println("OSM Type : " + jo.get("osm_type")); System.out.println("OSM ID : " + jo.get("osm_id")); System.out.println("BoundingBox : " + jo.get("boundingbox")); System.out.println("Lat : " + jo.get("lat")); System.out.println("lon : " + jo.get("lon")); System.out.println("type : " + jo.get("type")); System.out.println("Importance : " + jo.get("importance")); System.out.println("Icon : " + jo.get("icon")); System.out.println("Address : " + jo.get("address")); jo = jo.getAsJsonObject("address"); System.out.println("--------------------------------"); System.out.println("Castle : " + jo.get("castle")); System.out.println("Path : " + jo.get("path")); System.out.println("Neighbourhood : " + jo.get("neighbourhood")); System.out.println("Suburb : " + jo.get("suburb")); System.out.println("Town : " + jo.get("town")); System.out.println("State_District : " + jo.get("state_district")); System.out.println("State : " + jo.get("state")); System.out.println("Postcode : " + jo.get("postcode")); System.out.println("Country : " + jo.get("country")); System.out.println("Country_code : " + jo.get("country_code")); } @Test public void testGetDistanceUsingAddressCoordinates() { String location1 = "Dange Chowk, Pune, Maharashtra, 411033"; String location2 = "Chapekar chowk, Pune, Maharashtra, 411019"; String ADDRESSURL = "http://maps.googleapis.com/maps/api/distancematrix/json?origins="; String finalUrl = ADDRESSURL + location1 + "&destinations=" + location2 + "&mode=driving&language=en-EN&sensor=false"; System.out.println(finalUrl); RestTemplate restTemplate = new RestTemplate(); String result = restTemplate.getForObject(finalUrl, String.class); System.out.println("Result : " + result); JsonParser jsonParser = new JsonParser(); JsonObject jsonObject = (JsonObject) jsonParser.parse(result); JsonElement je = new JsonParser().parse(jsonObject.get("rows").toString()); JsonArray jsonArray = je.getAsJsonArray(); jsonObject = jsonArray.get(0).getAsJsonObject(); JsonElement je1 = new JsonParser().parse(jsonObject.get("elements").toString()); JsonArray jsonArray1 = je1.getAsJsonArray(); jsonObject = jsonArray1.get(0).getAsJsonObject(); JsonElement je2 = jsonObject.get("distance"); JsonObject jo = je2.getAsJsonObject(); System.out.println("Distance : " + jo.get("text")); Assert.assertEquals("OK", removeDoubleQuotes(jsonObject.get("status").toString())); Assert.assertEquals("2.7 km", removeDoubleQuotes(jo.get("text").toString())); } @Test public void testGetDistanceUsingLatAndLon() { String location1 = "54.406505,18.67708"; String location2 = "54.446251,18.570993"; String ADDRESSURL = "http://maps.googleapis.com/maps/api/distancematrix/json?origins="; String finalUrl = ADDRESSURL + location1 + "&destinations=" + location2 + "&mode=driving&language=en-EN&sensor=false"; System.out.println(finalUrl); RestTemplate restTemplate = new RestTemplate(); String result = restTemplate.getForObject(finalUrl, String.class); System.out.println("Result : " + result); JsonParser jsonParser = new JsonParser(); JsonObject jsonObject = (JsonObject) jsonParser.parse(result); JsonElement je = new JsonParser().parse(jsonObject.get("rows").toString()); JsonArray jsonArray = je.getAsJsonArray(); jsonObject = jsonArray.get(0).getAsJsonObject(); JsonElement je1 = new JsonParser().parse(jsonObject.get("elements").toString()); JsonArray jsonArray1 = je1.getAsJsonArray(); jsonObject = jsonArray1.get(0).getAsJsonObject(); JsonElement je2 = jsonObject.get("distance"); JsonObject jo = je2.getAsJsonObject(); System.out.println("Distance : " + jo.get("text")); Assert.assertEquals("OK", removeDoubleQuotes(jsonObject.get("status").toString())); Assert.assertEquals("24.4 km", removeDoubleQuotes(jo.get("text").toString())); } public String removeDoubleQuotes(String str) { return str.replaceAll("\"", "").trim(); } }