본문 바로가기
Language/Java

[JAVA] 구글 geocode 이용한 gps를 한글명 주소로 바꾸기

by 애기 개발자 2022. 1. 4.
반응형

회사에서 프로젝트 진행중 gps 정보를 주소가 찍히게끔 변경해달라는 요구를 받았다.

 

그래서 알아보았다.

 

우선 google에 접속하여 api key를 발급받고 사용하고자 하는 api를 등록해야 한다.

 

https://cloud.google.com/maps-platform/

 

Google Maps Platform - Location and Mapping Solutions

Create real world and real time experiences for your customers with dynamic maps, routes & places APIs from Google Maps Platform’s location solutions.

mapsplatform.google.com

위의 주소에서 

 

좌측 상단의 프로젝트 선택 > 새 프로젝트

 

API 및 서비스 > 라이브러리

 

검색 창에 geocode 입력 후 검색

 

 

이후 geocoding API 를 클릭해서 '사용' 버튼을 누르시면 됩니다.

 

위의 과정이 완료되면

 

사용자 인증 정보에 들어가서

 

사용자 인증 정보 만들기 > API 키 클릭 후 API 키를 생성하여 발급받으시면 됩니다.

 

이후 실제 사용 방법을 알려드리겠습니다.

 

<%@ page import="addr_api.*" %>
<%
double latitude = 37.48096906347303;
double longitude = 127.01033847341384;

GpsToAddress gps = new GpsToAddress(latitude, longitude);
System.out.println(gps.getAddress());
%>

<!-- 
test.jsp
위의 좌표값은 서초 예술의 전당 gps 위도 경도입니다.
-->
package addr_api;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.JSONValue;

public class GpsToAddress {
	double latitude;
	double longitude;
	String regionAddress;

	public GpsToAddress(double latitude, double longitude) throws Exception {
		this.latitude = latitude;
		this.longitude = longitude;
		this.regionAddress = getRegionAddress(getJSONData(getApiAddress()));
	}

	private String getApiAddress() {
		String apiURL = "https://maps.googleapis.com/maps/api/geocode/json?latlng="
				+ latitude + "," + longitude + "&language=ko&key=YOUR_KEY";
		return apiURL;
	}

	private String getJSONData(String apiURL) throws Exception {
		String jsonString = new String();
		String buf;
		URL url = new URL(apiURL);
		URLConnection conn = url.openConnection();
		BufferedReader br = new BufferedReader(new InputStreamReader(
				conn.getInputStream(), "UTF-8"));
		while ((buf = br.readLine()) != null) {
			jsonString += buf;
		}
		return jsonString;
	}

	private String getRegionAddress(String jsonString) {
		JSONObject jObj = (JSONObject) JSONValue.parse(jsonString);
		JSONArray jArray = (JSONArray) jObj.get("results");
		jObj = (JSONObject) jArray.get(0);
		return (String) jObj.get("formatted_address");
	}

	public String getAddress() {
		return regionAddress;
	}
}

jsp에서 GpsToAddress를 호출하여 사용하였습니다.

 

test.jsp 에서 System.out.println(gps.getAddress()); 해서 나온 결과 값은

 

대한민국 서울특별시 서초구 서초3동 1471-16 입니다.

 

반응형

댓글