Geocoder을 이용해 주소를 위도/경도로 변환하기
Geocoding이란 주소를 위도, 경도로 변환해주는 Google에서 제공하는 API이다.
링크 : 지오코딩이란?
처음엔 HttpURLConnection으로 접속해서 InputStreamReader로 읽은 후 JSON으로 파싱하게
만들었었는데 외국 사이트에 geocoder 라이브러리를 이용하여 받아오는 예제가 있었다.
어쨌든 더 편리하고 깔끔하게 해결되었다.
Geocoder Maven dependency
<dependency>
<groupId>com.google.code.geocoder-java</groupId>
<artifactId>geocoder-java</artifactId>
<version>0.16</version>
</dependency>
Method
public static Float[] geoCoding(String location) {
if (location == null)
return null;
Geocoder geocoder = new Geocoder();
// setAddress : 변환하려는 주소 (경기도 성남시 분당구 등)
// setLanguate : 인코딩 설정
GeocoderRequest geocoderRequest = new GeocoderRequestBuilder().setAddress(location).setLanguage("ko").getGeocoderRequest();
GeocodeResponse geocoderResponse;
try {
geocoderResponse = geocoder.geocode(geocoderRequest);
if (geocoderResponse.getStatus() == GeocoderStatus.OK & !geocoderResponse.getResults().isEmpty()) {
GeocoderResult geocoderResult=geocoderResponse.getResults().iterator().next();
LatLng latitudeLongitude = geocoderResult.getGeometry().getLocation();
Float[] coords = new Float[2];
coords[0] = latitudeLongitude.getLat().floatValue();
coords[1] = latitudeLongitude.getLng().floatValue();
return coords;
}
} catch (IOException ex) {
ex.printStackTrace();
}
return null;
}
latitudeLongitude.getLat().floatValue(); 이 부분은 floart 형이 아닌 toString() 으로도 가능하다
TEST
String location = "경기도 성남시 분당구 삼평동";
Float[] coords = CommonUtil.performGeoCoding(location);
System.out.println(location + ": " + coords[0] + ", " + coords[1]);
결과 : 경기도 성남시 분당구 판교동 : 37.406284, 127.116425
'Programming > java' 카테고리의 다른 글
[java] 영문/한글 길이 구하기 (0) | 2015.03.26 |
---|---|
[java] java JSON 데이터 파싱 (0) | 2015.01.20 |
[java] replaceAll(), trim() 으로 제거되지 않는 공백제거 (0) | 2015.01.09 |
[java] 몇 분전, 몇 시간전, 몇 일전 표현 Util (0) | 2014.12.11 |
[java] WebUtils 및 FileUtils (0) | 2014.11.18 |