Java tutorial
package demo.geocoders; import com.fasterxml.jackson.databind.JsonNode; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.util.Assert; import org.springframework.web.client.RestTemplate; import java.util.HashMap; import java.util.Map; /** * Mapquest compatible geocoder. Generally, works well with US addresses. * I have found that it does a poor job sometimes with foreign addresses, * * @author Josh Long */ @Component public class MapquestGeocoder implements Geocoder { private String urlPath = "http://www.mapquestapi.com/geocoding/v1/address?key={key}&format=json&callback=&location={location}"; private RestTemplate restTemplate; private String key = null; @Autowired public MapquestGeocoder(@Value("${mapquest.key}") String key) { this(key, new RestTemplate()); } public MapquestGeocoder(@Value("${mapquest.key}") String key, RestTemplate restTemplate) { this.restTemplate = restTemplate; this.key = key; Assert.notNull(this.restTemplate, "the restTemplate must not be null!"); Assert.notNull(this.key, "the license key must not be null!"); } // NB: u must first *decode* whatever key u use for the geocoder. public static void main(String[] args) { MapquestGeocoder mapquestGeocoder = new MapquestGeocoder("Fmjtd|luur21u7n0,7x=o5-90txdr", new RestTemplate()); LatLong latLong = mapquestGeocoder.geocode("8010 Shirley Ave, Los Angeles, CA 85283"); System.out.println(latLong.toString()); } @Override public LatLong geocode(String address) { Map<String, String> map = new HashMap<>(); map.put("key", this.key); map.put("location", address); ResponseEntity<JsonNode> responseEntity = this.restTemplate.getForEntity(this.urlPath, JsonNode.class, map); System.out.println(responseEntity.toString()); JsonNode jsonNode = responseEntity.getBody(); if (jsonNode.path("results").size() > 0) { JsonNode results = jsonNode.path("results").get(0); JsonNode locations = results.path("locations").get(0); JsonNode latLng = locations.path("latLng"); double lng = latLng.get("lng").doubleValue(), lat = latLng.get("lat").doubleValue(); return new LatLong(lat, lng); } return null; } }