2012-06-11 3 views
1

나는 어느 시점에서 약 14000 개의 마커를 그린다. 맵의 경계가 마커가 그려지는 전체 영역으로 설정된 경우 마커를 그리는 데 오랜 시간이 걸립니다 (약 8 초). 그러나 마커가 거의 또는 전혀없는 영역으로 확대하면 14,000 개의 마커를 그리는 속도가 2-3 초 정도 빨라집니다.Google지도 V3에서 마커 렌더링을 일시적으로 사용 중지 할 수 있습니까?

시간이 많이 소요되는 과정은 마커 아이콘을 타일에 실제로 그리는 것이므로 마커가 한 번에 하나씩 추가되므로 맵은 매우 짧은 시간 범위 .

따라서지도를 업데이트하는 동안지도 업데이트/렌더링을 사용 중지 할 수 있는지 확인한 다음 모든 아이콘을 추가 할 때 다시 사용하도록 설정했는지 궁금합니다.

유사한 효과를 가진 모든 솔루션은

+0

내가 볼 수있는지도에 14000 개의 마커를 추가하는 것이 왜 원격으로 유용할지 알 수 없습니다. 그것은 당신이 생각해야 할 마커의 수입니다. 확실하게, 어떻게 속도를 높이는가가 아닙니다. –

+0

클러스터링을 구현하는 등의 문제가 계속 발생합니다. 당분간지도 렌더링을 비활성화하는 코드 한 줄, 나중에 다시 활성화하는 코드 한 줄은 400 %의 속도 증가가됩니다 – Hubro

+0

@AndrewLeach : 내 위의 설명에서 참조하는 것을 잊었습니다 – Hubro

답변

1

예, 당신은지도와 연결하지, 마커를 많이 만들 수 있습니다 환영합니다. 그런 다음 나중에 각각에 대해 setMap() 함수를 호출하십시오.

현재 경계 내에서만 수행 할 수도 있습니다.

마커 수를 줄이기 위해 마커 클러스터링을 고려 했습니까?

코드를 보는 것이 유용 할 것입니다.

+0

글쎄, 그 (것)들 하나 하나에 setMap()'는 내가하고있는 일이고,지도가 첫 마커 다음에 타일을 새로 고치게 만듭니다. 실제로 각 마커에서'setMap()'을 호출하는 동안지도를 자동으로 렌더링하는 "스위치를 끄는"방법이 필요합니다. 그런 다음 모든 마커가 추가되었을 때 단 한번 렌더링하도록하십시오 – Hubro

+1

유일한 방법은 마커는 맵 속성이 NULL이 아닌 객체로 설정된 객체를 사용하여 개별 인스턴스화 중이거나 각 마커에서 개별적으로 setMap()을 호출 할 때 사용됩니다. 모든 마커를 동시에 추가 할 수있는 방법은 없습니다. 당신이 말하는 것은 말이되지 않습니다. 마커를 추가하면 타일이 새로 고쳐지지 않습니다. – Adam

+0

@ 아담 : 내가 아는 전부는 : ** 시계 **를하면 마커가 추가됩니다. 먼저 임의의 위치로 확대 할 때보 다 약 10 배 더 오래 걸립니다.나는 이것이 그들이 모두 추가 될 때 한꺼번에 그려지는 것이 아니라 하나씩 추가됨에 따라 하나씩 그려지기 때문이라고 가정해야합니다. – Hubro

2

더 단단히 확대했을 때 api v3가 14000을 추가하지 않기 때문에 렌더링 시간이 줄어 듭니다. 타일 ​​경계 버퍼에있는 현재 경계 플러스 마커에있는 마커 만 가장자리에 추가합니다 (아마 하나 또는 두 개의 타일).

나는 종류의 당신이 무엇을 의미하는지에 관해서의 혼란 스러워요, 그러나 아마 당신은지도가 이미로드 된 후에 만 ​​마커를 추가 할 :

google.maps.event.addListenerOnce(map,'tilesloaded',addMarkersFunction); 

모든 상기되고, (14 개) 000 마커가있다 마커가 많이 있습니다. 클러스터링 마커가 많으면 더 이상 선택 사항이 아닙니다.

+0

미안하지만 내 의도를 오해 했어. 너무 오래 걸리는 이유는 (내 질문에 설명하는 바와 같이)지도 **가 반복적으로 ** 업데이트되고 ** ** 마커를 추가하는 동안입니다. 멀리 확대 할 때 시간이 떨어지는 이유는 맵이 렌더링/새로 고침을 자주하지 않기 때문입니다. 추가되는 마커의 대부분은 뷰포트 경계가 아니므로 강제되지 않습니다. 새로 고침 타일. 맵을 추가하는 동안지도가 자동으로 타일을 계속 새로 고침하는 것을 막을 수있는 방법이 필요합니다. – Hubro

0

Google Maps API v3 Utility LibraryMarkerManager 라이브러리를 사용해보세요. 그것은 그러한 문제들을 위해 고안되었습니다. 문서화에는별로 도움이되지 않지만 유용한 예제와 소스 코드에 대한 많은 의견이 있습니다.

+0

좋은 질문에 감사드립니다. 그러나이 질문에 대답하지 않습니다. – Hubro

+0

참 - 찾고 있던 대답이 "아니오"입니다. 캔버스 마커를 사용하지 않도록 설정하는 트릭이 있습니다 ("드래그 가능"을 true로 설정). 그러나 마커가 많은 마커는 캔버스 마커 없이는 거의 사용할 수 없습니다. –

관련 문제