com.bytebybyte.mapquest.geocoding.service.standard.MapQuestTest.java Source code

Java tutorial

Introduction

Here is the source code for com.bytebybyte.mapquest.geocoding.service.standard.MapQuestTest.java

Source

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();
    }
}