우리 프로젝트의 레퍼런스
위의 사진처럼 지도 API를 가져와서 단기임대 건물의 위치를 화면에 띄워보자
지도 API는 대표적으로 카카오 API와 네이버 API가 있다
카카오 API가 예시코드 및 공식문서(가이드)가 잘 나와있다고 하여 이걸로 선택!
아래 사이트가 카카오 Maps API의 가이드이다
https://apis.map.kakao.com/web/guide/
KAKAO Map API key 발급받기
먼저 kakao developers 사이트에 접속
로그인 후 내 애플리케이션 클릭
애플리케이션 추가하기 선택
아래와 같이 작성하고 저장 클릭
mapAPI2라는 이름의 앱이 생성되었다. mapAPI2를 클릭 후
mapAPI2 클릭 후 빨간색으로 표시한 메뉴 아이콘 클릭
플랫폼 클릭
우리는 Web에 띄울 것이므로 Web 플랫폼 등록 클릭
http://localhost:8080 입력 후 저장
잘 저장되었다
이클립스(Eclipse)에서 웹 프로젝트 생성해 띄우기
이제 이클립스에서 프로젝트를 생성하여 웹에 띄워보자
Project Explorer에서 New > Dynamic Web Project
프로젝트 이름은 locationEx02로 해주었다
src > main > webapp 아래에 index.jsp 파일을 생성해 주었다
이제 본격적으로 카카오 API 가이드를 활용해보자
https://apis.map.kakao.com/web/sample/
위의 사이트 접속 뒤 '주소로 장소 표시하기' 선택
사이트에 나와있는 Javascript + HTML 코드를 긁어와서
chatgpt를 통해 위의 코드를 jsp코드로 변환한 결과는 다음과 같다
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>주소로 장소 표시하기</title>
</head>
<body>
<p style="margin-top: -12px;">
<em class="link">
<a href="javascript:void(0);" onclick="window.open('http://fiy.daum.net/fiy/map/CsGeneral.daum', '_blank', 'width=981, height=650');">
혹시 주소 결과가 잘못 나오는 경우에는 여기에 제보해주세요.
</a>
</em>
</p>
<div id="map" style="width:100%;height:350px;"></div>
<script type="text/javascript" src="//dapi.kakao.com/v2/maps/sdk.js?appkey=발급받은APPKEY&libraries=services"></script>
<script>
var mapContainer = document.getElementById('map'); // 지도를 표시할 div
var mapOption = {
center: new kakao.maps.LatLng(33.450701, 126.570667), // 지도의 중심좌표
level: 3 // 지도의 확대 레벨
};
// 지도를 생성합니다
var map = new kakao.maps.Map(mapContainer, mapOption);
// 주소-좌표 변환 객체를 생성합니다
var geocoder = new kakao.maps.services.Geocoder();
// 주소로 좌표를 검색합니다
geocoder.addressSearch('제주특별자치도 제주시 첨단로 242', function(result, status) {
// 정상적으로 검색이 완료됐으면
if (status === kakao.maps.services.Status.OK) {
var coords = new kakao.maps.LatLng(result[0].y, result[0].x);
// 결과값으로 받은 위치를 마커로 표시합니다
var marker = new kakao.maps.Marker({
map: map,
position: coords
});
// 인포윈도우로 장소에 대한 설명을 표시합니다
var infowindow = new kakao.maps.InfoWindow({
content: '<div style="width:150px;text-align:center;padding:6px 0;">우리회사</div>'
});
infowindow.open(map, marker);
// 지도의 중심을 결과값으로 받은 위치로 이동시킵니다
map.setCenter(coords);
}
});
</script>
</body>
</html>
위의 코드에서 바꿔야 할 부분은 딱 세 부분이다
1. 발급받은 APPKEY 넣기
먼저 아래 코드에 발급받은 APPKEY를 넣어주자
<script type="text/javascript" src="//dapi.kakao.com/v2/maps/sdk.js?appkey=발급받은APPKEY&libraries=services"></script>
APPKEY는 kakao devopers 페이지에서
앱 키 > JavaScript 키를 복사해 넣어주면 된다
2. 주소 넣기
// 주소로 좌표를 검색합니다
geocoder.addressSearch('서울 성동구 왕십리로 16', function(result, status) {
3. 장소 이름 넣기
// 인포윈도우로 장소에 대한 설명을 표시합니다
var infowindow = new kakao.maps.InfoWindow({
content: '<div style="width:150px;text-align:center;padding:6px 0;">트리마제</div>'
});
웹 프로젝트를 실행시켜 보면 아래와 같이 장소가 잘 표시되는 것을 확인 가능
완성 코드는 다음과 같다
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>주소로 장소 표시하기</title>
</head>
<body>
<p style="margin-top: -12px;">
<em class="link">
<a href="javascript:void(0);" onclick="window.open('http://fiy.daum.net/fiy/map/CsGeneral.daum', '_blank', 'width=981, height=650');">
혹시 주소 결과가 잘못 나오는 경우에는 여기에 제보해주세요.
</a>
</em>
</p>
<div id="map" style="width:100%;height:350px;"></div>
<script type="text/javascript" src="//dapi.kakao.com/v2/maps/sdk.js?appkey=발급받은 APP KEY를 사용하세요&libraries=services"></script>
<script>
var mapContainer = document.getElementById('map'); // 지도를 표시할 div
var mapOption = {
center: new kakao.maps.LatLng(33.450701, 126.570667), // 지도의 중심좌표
level: 3 // 지도의 확대 레벨
};
// 지도를 생성합니다
var map = new kakao.maps.Map(mapContainer, mapOption);
// 주소-좌표 변환 객체를 생성합니다
var geocoder = new kakao.maps.services.Geocoder();
// 주소로 좌표를 검색합니다
geocoder.addressSearch('서울 성동구 왕십리로 16', function(result, status) {
// 정상적으로 검색이 완료됐으면
if (status === kakao.maps.services.Status.OK) {
var coords = new kakao.maps.LatLng(result[0].y, result[0].x);
// 결과값으로 받은 위치를 마커로 표시합니다
var marker = new kakao.maps.Marker({
map: map,
position: coords
});
// 인포윈도우로 장소에 대한 설명을 표시합니다
var infowindow = new kakao.maps.InfoWindow({
content: '<div style="width:150px;text-align:center;padding:6px 0;">트리마제</div>'
});
infowindow.open(map, marker);
// 지도의 중심을 결과값으로 받은 위치로 이동시킵니다
map.setCenter(coords);
}
});
</script>
</body>
</html>
자신이 발급받은 APP KEY 넣는 것 잊지 말기!
'세미 프로젝트' 카테고리의 다른 글
[Java/Servlet] 게스트 입장에서 mvc 패턴으로 방 계약 구현 (0) | 2024.07.30 |
---|---|
[Java/Servlet] MVC 기반으로 방 계약 구현 (0) | 2024.07.29 |
[Java/Servlet] Dao와 DaoImpl (0) | 2024.07.28 |
[Java/Servlet] MVC 디자인 패턴: Model-View-Controller의 역할과 상호작용 + 방 리스트 조회 및 페이징 처리에 적용해보기 (0) | 2024.07.27 |