2012-03-18 4 views
2

Google지도 마커와 자바 스크립트에 대한 질문이 있습니다.Google지도의 마커에 느린 루프

내가 당신이 그것을 클릭 할 때 마커를 생성에만 사업부 (map_canvas)가 페이지 및 입력 한 마커의 이름과 마커가 수신 거부 시작하는 텍스트 필드 ...

에이 마커 추적하기 나는 모든 마커가 추가 된 배열을 가지고있다. 문제는 여기

제가 가지고있는 루프 ...는 마커 20+ 다네 때 UI가 루핑 동안 응답하지 않게되는 경향이있다의 파라미터로서 마커 ID를 취하는 함수 내부

for (var i=0; i < markers.length; i++) { 
     if(markers[i].id == id) 
     { 
      if(markers[i].getAnimation() != null) 
      { 
       markers[i].setAnimation(null); 
      } 
      else 
      { 
       markers[i].setAnimation(google.maps.Animation.BOUNCE); 
      } 
     } 
     else 
      markers[i].setAnimation(null); 
    } 

이것이 재발행인지 또는 더 자세한 정보를 제공해야하는지 알려주세요 ... 여기가 내 첫 번째 질문입니다!

+0

루핑하는 동안 UI가 의미하는 바가 응답하지 않는 경향이있을 수 있습니다. 수신 거부 또는지도가 표시되지 않습니다. –

+0

반복하는 동안지도가 응답하지 않습니다 ...지도를 클릭하고 이동하려고하면 반복문이 마커를 찾는 동안 응답하지 않습니다. – gastonfartek

+0

애니메이션을 마커로 설정 한 후 매핑 하시겠습니까? –

답변

1

markers 배열의 색인으로 id을 사용하여 각 마커에 반복적으로 액세스하지 않고 직접 액세스 할 수 있도록하는 것이 좋습니다. 일단 "현재"마커가 있으면 다음 발 수신을 시작할 때 수신을 멈추게 할 순서를 기록해 두십시오.

var lastmarker; 
...  
if (lastmarker) {markers[lastmarker].setAnimation(null)} 
markers[id].setAnimation(google.maps.Animation.BOUNCE); 
lastmarker=id; 

물론이 제안의 실행 가능성은 나머지 코드에도 달려 있습니다.

0

코드에 단계/중단 점을 추가 할 것을 제안합니다. 코드 환경이 .....인지 확인하십시오. 직선 html을 사용하는 경우 중단 점을 사용하여 코드를 단계별로 실행하는 것이 좋습니다. 코드에서 문제를 볼 수 있습니다. 나는 그것이 코드와 관련 있다고 추측한다.

만약 당신이 이미 그렇게했다면 나는 20 개 이상의 마커에서 작동을 멈추는 이유에 대해 꽤 당혹 스럽다. 코드와 관련이 없다면 뭔가있는 것으로 추측한다. 이전에 마커 배치에 대한 최대 경험이 없지만 특정 상황에 대한 최대 값을 초과하면 Google의 api와 관련이 있습니다. 예를 들어 ASP 환경에서 수행중인 작업을 수행했습니다. 더 많은 마커.