본문 바로가기
Programming/java

Geocoder을 이용해 주소를 위도/경도로 변환

by 막이 2021. 12. 15.

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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;
 
    }
cs

 

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