응! Kakao Map 연동 구조는 JSP + Servlet 기반에서도 충분히 구현 가능해! 😎
전체 흐름을 정리하면 이렇고, 가능 여부 → 완전 가능!
register.jsp 또는 signup.jsp 등에서 사용자 지역 선택<form action="RegisterServlet" method="post">
<select name="region">
<option value="gangnam">강남</option>
<option value="hongdae">홍대</option>
<!-- ... -->
</select>
<input type="submit" value="가입">
</form>
// RegisterServlet.java
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String region = request.getParameter("region");
// UserDTO.setRegion(region); 이후 DB 저장
}
ProductInsertServlet에서 사용자가 상품 올릴 때 region도 같이 전송<input type="hidden" name="region" value="gangnam"> 등ProductListServlet에서 현재 로그인 사용자의 region 불러옴region 기준으로 상품만 조회 → DAO에서 조건 걸어줌SELECT * FROM product WHERE region = ?
productList.jsp에 지도 넣고, 서버에서 가져온 상품 위치마다 Marker 뿌림<c:forEach var="product" items="${productList}">
<script>
var markerPosition = new kakao.maps.LatLng(${product.lat}, ${product.lng});
var marker = new kakao.maps.Marker({
position: markerPosition
});
marker.setMap(map);
</script>
</c:forEach>
💡 lat, lng은 DB에 저장되어 있어야 하고, 상품 등록 시 Kakao 주소 검색 API 써서 좌표 얻을 수 있어!
<script>로 반복문 돌리면서 찍으면 끝!<!-- Kakao 주소 검색 API 예제 -->
<input type="text" id="addressInput">
<button onclick="searchAddress()">주소 찾기</button>
<script>
function searchAddress() {
var geocoder = new kakao.maps.services.Geocoder();
geocoder.addressSearch(document.getElementById("addressInput").value, function(result, status) {
if (status === kakao.maps.services.Status.OK) {
var lat = result[0].y;
var lng = result[0].x;
// hidden input에 저장
document.getElementById("lat").value = lat;
document.getElementById("lng").value = lng;
}
});
}
</script>
<input type="hidden" name="lat" id="lat">
<input type="hidden" name="lng" id="lng">
필요하다면 아래 항목도 정리해줄게:
region, lat, lng 포함)필요한 부분 콕 집어줘! 💪