사실 원하는 메소드는 네이버 지도 API 홈페이지에서 찾는 게 제일 효율적입니다.
https://navermaps.github.io/maps.js.ncp/docs/tutorial-2-Marker.html
NAVER Maps API v3
NAVER Maps API v3로 여러분의 지도를 만들어 보세요. 유용한 기술문서와 다양한 예제 코드를 제공합니다.
navermaps.github.io
javascript
// x,y = 지도를 오픈할 중심 좌표 값
function storeOpen(x, y) {
var MARKER_ICON_URL = 'resources/img/이미지아이콘경로.png';
// 파라미터로 받은 좌표 값으로 지도 생성
var map = new naver.maps.Map('map', {
center: new naver.maps.LatLng(x, y),
zoom: 15 //지도 확대 정도
});
// 중심 좌표를 기준으로한 좌표 경계
// 쉽게 말해서 화면 안에 표시되는 좌표의 범위
// 이 부분은 수정하면 안 됨
var bounds = map.getBounds(),
southWest = bounds.getSW(),
northEast = bounds.getNE(),
lngSpan = northEast.lng() - southWest.lng(),
latSpan = northEast.lat() - southWest.lat();
// 디비에서 가져올 각 좌표들의 마커를 저장 할 배열
var markers = [];
// 디비에서 조회 할 중심 좌표
var param = { "pi_x": x, "pi_y": y };
$.ajax({
url : "store.do",
data : param,
type : "post",
success : function(data){
// 컨트롤러에서 보낸 데이터
// 중심 좌표 반경 2km내에 속하는 좌표의 리스트(객체)
var storelist = data.store;
// 객체 수 만큼 마커 생성하여 배열에 담기
$.each(storelist , function(i, store){
// 객체가 가진 좌표 값 셋팅
var position = new naver.maps.LatLng(store.pi_x, store.pi_y);
// 마커 생성
var marker = new naver.maps.Marker({
map: map, // 위에서 생성한 지도
position: position, // 객체의 좌표 값
title: store.store_name,
icon: {
url: MARKER_ICON_URL, // 아이콘 경로 설정
size: new naver.maps.Size(36, 49), // 아이콘 사이즈 설정
anchor: new naver.maps.Point(12, 37),
origin: new naver.maps.Point(0, 0)
},
zIndex: 100
});
markers.push(marker);
});
},
error : function(request,status,error){
alert("code:"+request.status+"\n"+"message:"+request.responseText+"\n"+"error:"+error);
}
});
// 확대, 축소 시 마커 변경 이벤트
naver.maps.Event.addListener(map, 'zoom_changed', function() {
updateMarkers(map, markers);
});
// 지도 드래그 시 마커 변경 이벤트
naver.maps.Event.addListener(map, 'dragend', function() {
updateMarkers(map, markers);
});
}
// 마커 갱신 이벤트
function updateMarkers(map, markers) {
// 지도의 변경된 중심 좌표 출력
var mapaddr = map.getCenter();
console.log(mapaddr.y);
console.log(mapaddr.x);
var mapBounds = map.getBounds();
var marker, position;
// 이동된 중심 좌표를 기준으로 해당 반경 안에 있는 마커만 보여줌
for (var i = 0; i < markers.length; i++) {
marker = markers[i]
position = marker.getPosition();
if (mapBounds.hasLatLng(position)) {
showMarker(map, marker);
} else {
hideMarker(map, marker);
}
}
}
// 지도 움직임에 따라 마커 보임
function showMarker(map, marker) {
if (marker.setMap()) return;
marker.setMap(map);
}
// 지도 움직임에 따라 마커 숨김
function hideMarker(map, marker) {
if (!marker.setMap()) return;
marker.setMap(null);
}
Controller
@RequestMapping("store.do")
@ResponseBody
public HashMap<String, Object> nearStoreOpen(DataDTO dto) {
List<StoreDTO> list = dao.StoreMapSearch(dto);
HashMap<String, Object> result = new HashMap <String, Object>();
result.put("store", list);
return result;
}
jsp
<!-- 배경 map -->
<div class="api">
<div id="map" style="width: 100%; height: 100%;"></div>
</div>
'Front > JQuery' 카테고리의 다른 글
[JQuery] 자동 슬라이드/무한 슬라이드 배너 만들기(외부 소스X) (1) | 2021.07.29 |
---|---|
[네이버지도API] 해당 지역에 마커 찍기, 마커 아이콘 변경 (0) | 2021.07.12 |
[JQuery-3.6.0] 효과-애니메이션(Animation) 처리 (0) | 2021.04.29 |
[JQuery-3.6.0] 이벤트(Event) 처리 (0) | 2021.04.29 |
[JQuery-3.6.0] 요소(속성) 편집 메서드 (0) | 2021.04.28 |