문제

Google Maps API V3을 사용합니다.

내 사이트 GMAP API V2-> V3을 마이그레이션합니다. 그러나 V2에서 기존 객체를 한 번에 삭제하기 위해 ClearoVerlays () 메소드를 사용했기 때문에 대처했으며 V3에서 개별적으로 폐지 된 것의 객체를 삭제했습니다.

v2

map.clearOverlays();

v3

map.set_visible(false);
popup.close();

괜찮아? 아니면 다른 솔루션?

도움이 되었습니까?

해결책

나는 아무것도 찾을 수 없었다 V3 참조 지도에서 생성 된 오버레이를 명시 적으로 지우고이를 수행하는 코드 샘플을 찾을 수 없습니다.

V3 API가 매우 초기 개발자 릴리스이며 매우 기본 기능 세트. 그들이 아직이 기능에 도달하지 못했을 가능성이 있습니다. 라이브 시스템에서 작업하는 경우 V3가 더 성숙해질 때까지 V2를 고수하는 것이 좋습니다.

개발자 그룹에 API가 V3 제품 관리자의 매우 유용한 답변으로 어떻게 사용되어야하는지에 대한 질문을하는 게시물이 있습니다.

V3 옵션에 대한 오해

편집하다:

좋아,이 기능은 API에서 의도적으로 가볍게 유지하기 위해 고의적으로 누락 된 것 같습니다. 오버레이 객체를 직접 추적하고 전화해야합니다.

object.set_map(null);

그들을 제거합니다.

다른 팁

여기에 내가하는 일이 있습니다.

빈 배열 문자를 만들고 마커를 만들 때 마커를 밀고 필요할 때 퇴거하십시오.

var eviction_list = [];

function evictMarkers() {

    // clear all markers

    $(eviction_list).each(function () {
         this.set_map(null);
    });

    // reset the eviction array 
    eviction_list = [];
}

//in function adding markers
......
marker = new google.maps.Marker({
    position: results[0].geometry.location,
    map: map,
    title: elem.title
});
eviction_list.push(marker);
......

//to clear all markers
evictMarkers();

Hongwei가 올바르게 언급했듯이 함수는 set_map ()가 아닌 setMap ()이라고합니다.

보다 http://code.google.com/apis/maps/documentation/v3/overlays.html#hideshow

문제는 그 것입니다 setMap(null) 마커가 많으면 느리게 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top