본문 바로가기

Programming/java

[java] Geocoder을 이용해 주소를 위도/경도로 변환하기

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