http (REST API) 관련이기 때문에 다른 프로젝트에서도 동일하게 적용 가능합니다.
Flutter 프로젝트를 진행하다, Google Places API를 이용해 텍스트로 장소를 검색하는 기능을 만드는데 response JSON에서 장소 이름이 영어로 나와서 화면에 띄워주기엔 좀 불편했다.
그래서 한국어로 response를 받을 수 있는 방법이 있는 지 찾아보았다.
우선, 기존에는 검색어 텍스트를 이용해 get요청으로 장소 정보를 받아오고 있었다.
String url = "https://maps.googleapis.com/maps/api/place/textsearch/json?query=";
String key = dotenv.env['GOOGLE_PLACES_API_2'] ?? "";
url += "$placeText_&key=$key";
var response = await http.get(Uri.parse(url));
var statusCode = response.statusCode;
var responseHeaders = response.headers;
var responseBody = response.body;
print("responseBody: $responseBody");
// 출력 결과
responseBody: {
"results" : [
"formatted_address" : "(영어 주소)"
"geometry" : {
"location" : {
"lat" : 37.560997,
"lng" : 126.994728
},
...
}
"name" : "Hongje 3(sam)-dong"
...
]
}
그러면, 출력 결과처럼 장소의 이름이 영어로 나오는 문제가 있었다. (물론 주소도..)
이걸 한국어로 바꾸기 위해선, get 요청 url에 language 옵션만 넣어 주면 되었다.
근데 영어로는 세세한 name이 나오지만, 한국어로는 같은 이름인 경우가 종종 있으니 주의.
예를 들면, "서울역"을 검색하면 서울역이라는 name이 4개나 있는 것을 볼 수 있다.
물론 주소는 서로 다 다름. ㅋㅋ.
String url = "https://maps.googleapis.com/maps/api/place/textsearch/json?query=";
String key = dotenv.env['GOOGLE_PLACES_API_2'] ?? "";
// language=ko 옵션을 추가했다.
url += "$placeText_&language=ko&key=$key";
var response = await http.get(Uri.parse(url));
var statusCode = response.statusCode;
var responseHeaders = response.headers;
var responseBody = response.body;
print("responseBody: $responseBody");
// 출력 결과
responseBody: {
"results" : [
"formatted_address" : "대한민국 서울특별시 서대문구 홍제3동"
"geometry" : {
"location" : {
"lat" : 37.560997,
"lng" : 126.994728
},
...
}
"name" : "홍제3동"
...
]
}
Reference
https://developers.google.com/maps/documentation/places/web-service/search-text