괜찮아? GMAP API V2에서 Google Maps API V3의 ClearoVerLays ()?
-
11-09-2019 - |
문제
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 제품 관리자의 매우 유용한 답변으로 어떻게 사용되어야하는지에 대한 질문을하는 게시물이 있습니다.
편집하다:
좋아,이 기능은 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)
마커가 많으면 느리게 할 수 있습니다.