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
'Programming > java' 카테고리의 다른 글
fcm push (0) | 2020.10.16 |
---|---|
RSA 기반 웹페이지 암호화 로그인 (1) | 2019.07.16 |
Convert JSONObject/JSONArray to a Map/List (0) | 2017.07.12 |
HttpSessionBindingListener 을 이용한 중복로그인 체크 (0) | 2015.11.25 |
큰 ArrayList 여러개의 ArrayList 로 분할하기 (0) | 2015.10.29 |