코드좀 봐주세요 맵을 축소하니 버벅거립니다..ㅠㅠ

캡처

맵을 축소시키면 위 화면처럼 계속 로딩만된다고 표시됩니다. 어디서 잘못됫을까요

var placeOverlay = new daum.maps.CustomOverlay({zIndex:1}),
contentNode = document.createElement(‘div’);

var mapContainer = document.getElementById(‘map’), // 지도를 표시할 div
mapOption = {
center: new daum.maps.LatLng(37.566826, 126.9786567), // 지도의 중심좌표
level: 3 // 지도의 확대 레벨
};

// 지도를 생성합니다
var map = new daum.maps.Map(mapContainer, mapOption);

// 장소 검색 객체를 생성합니다
var ps = new daum.maps.services.Places(map);

//지도에 idle 이벤트를 등록합니다
daum.maps.event.addListener(map, ‘idle’);

//커스텀 오버레이의 컨텐츠 노드에 css class를 추가합니다
contentNode.className = ‘placeinfo_wrap’;

//커스텀 오버레이의 컨텐츠 노드에 mousedown, touchstart 이벤트가 발생했을때
//지도 객체에 이벤트가 전달되지 않도록 이벤트 핸들러로 daum.maps.event.preventMap 메소드를 등록합니다
addEventHandle(contentNode, ‘mousedown’, daum.maps.event.preventMap);
addEventHandle(contentNode, ‘touchstart’, daum.maps.event.preventMap);

//커스텀 오버레이 컨텐츠를 설정합니다
placeOverlay.setContent(contentNode);

// 카테고리로 은행을 검색합니다
ps.categorySearch(‘PM9’, placesSearchCB, {useMapBounds:true});

//엘리먼트에 이벤트 핸들러를 등록하는 함수입니다
function addEventHandle(target, type, callback) {
if (target.addEventListener) {
target.addEventListener(type, callback);
} else {
target.attachEvent(‘on’ + type, callback);
}
}

// 키워드 검색 완료 시 호출되는 콜백함수 입니다
function placesSearchCB (data, status, pagination) {
if (status === daum.maps.services.Status.OK) {
for (var i=0; i<data.length; i++) {
displayMarker(data[i]);
}
}
}

// 지도에 마커를 표시하는 함수입니다
function displayMarker(place) {
// 마커를 생성하고 지도에 표시합니다
var marker = new daum.maps.Marker({
map: map,
position: new daum.maps.LatLng(place.y, place.x)
});
// 마커와 검색결과 항목을 클릭 했을 때
// 장소정보를 표출하도록 클릭 이벤트를 등록합니다
(function(marker, place) {
daum.maps.event.addListener(marker, ‘click’, function() {
displayPlaceInfo(place);
});
})(marker, place);
}

//마커를 생성하고 지도 위에 마커를 표시하는 함수입니다
function addMarker(position, order) {
var imageSrc = ‘http://t1.daumcdn.net/localimg/localimages/07/mapapidoc/places_category.png’, // 마커 이미지 url, 스프라이트 이미지를 씁니다
imageSize = new daum.maps.Size(27, 28), // 마커 이미지의 크기
imgOptions = {
spriteSize : new daum.maps.Size(72, 208), // 스프라이트 이미지의 크기
spriteOrigin : new daum.maps.Point(46, (order*36)), // 스프라이트 이미지 중 사용할 영역의 좌상단 좌표
offset: new daum.maps.Point(11, 28) // 마커 좌표에 일치시킬 이미지 내에서의 좌표
},
markerImage = new daum.maps.MarkerImage(imageSrc, imageSize, imgOptions),
marker = new daum.maps.Marker({
position: position, // 마커의 위치
image: imageSrc
});

marker.setMap(map); // 지도 위에 마커를 표출합니다
markers.push(marker);  // 배열에 생성된 마커를 추가합니다

return marker;

}

//클릭한 마커에 대한 장소 상세정보를 커스텀 오버레이로 표시하는 함수입니다
function displayPlaceInfo (place) {
var content = ‘

’ +
’ + place.place_name + ‘’;
if (place.road_address_name) {
    content += '    <span title="' + place.road_address_name + '">' + place.road_address_name + '</span>' +
                '  <span class="jibun" title="' + place.address_name + '">(지번 : ' + place.address_name + ')</span>';
}  else {
    content += '    <span title="' + place.address_name + '">' + place.address_name + '</span>';
}                

content += '    <span class="tel">' + place.phone + '</span>' + 
            '</div>' + 
            '<div class="after"></div>';

contentNode.innerHTML = content;
placeOverlay.setPosition(new daum.maps.LatLng(place.y, place.x));
placeOverlay.setMap(map);  

}

idle 이벤트 등록하는 부분을 빼주세요. 아무 기능도 안 할 뿐더러 용법에도 맞지 않습니다.

1개의 좋아요

아!! 감사합니다 해결했네요

한가지 궁금한게 있는데요

전국으로 마커가 생기게 하려면 어떤 코드를 추가 해야되나요?

지금은 몇개 밖에 마커가 안뜨네요

전국에 있는 모든 은행을 다 뿌리는건 지원하지 않습니다.
데이터의 양도 양이려니와
그렇게 많은 데이터를 마커로 만들면 페이지의 성능이 나오지 않습니다.

해당 API는 한 한 페이지 요청에 대해 최대 15개까지만 결과를 내려주며 최대 3페이지,
결국 15 * 3 = 45개 까지 받아볼 수 있습니다.

일단 전국적인 검색이 필요하시면 코드에서

var ps = new daum.maps.services.Places(map); // 이 부분을
var ps = new daum.maps.services.Places(); // 이렇게 변경

ps.categorySearch(‘PM9’, placesSearchCB, {useMapBounds:true}); // 이 부분을
ps.categorySearch(‘PM9’, placesSearchCB); // 이렇게 변경

위와같이 고쳐주세요.

1개의 좋아요

ps.categorySearch(‘PM9’, placesSearchCB,{
radius :useMapCenter
});
이렇게 사용하는 건가요??

http://apis.map.daum.net/web/documentation/#services_Places_categorySearch
문서를 참조해 주세요.