2013-07-01 4 views
0


현재 전체 아이콘이있는 Google지도가있는 교차 플랫폼 앱에서 작동 중입니다. Ajax 쿼리를 사용하여 위도/경도 값 목록과 객체 카테고리가있는 검도 UI 모바일 데이터 소스를 얻습니다.
사용자가 해당 카테고리에서 켜기를 선택하면 해당 마커가지도에 나타납니다. 이것은 현재 작동하지만 제거하는 것이 문제입니다.

제거하려고 할 때 특정 라벨이있는 모든 마커를 삭제하는 방법을 모르겠습니다. 제거 할 적절한 마커를 찾기 위해 반복 할 수있는 마커의 전체 배열이 있습니까?
이러한 특정 마커를 삭제하려면 null로 매핑하면됩니다. 마커를 추가
내 코드는 다음과 같습니다 :라벨로 Google지도 아이콘 삭제

var markers = []; 

그리고/생성 함수가 마커를 제거 : 일부 외부 범위에서

var dataItem; 
    var facData = new kendo.data.DataSource({ 
     ........ 
    }); 
    facData.fetch(function() { 
     if (e.checked == 1) { 
      for (var i = 0;i < facData.view().length;i++) { 
       dataItem = facData.view()[i]; 
       dataItemLatLng = new google.maps.LatLng(dataItem.lat, dataItem.lon); 
       createMarker(dataItemLatLng, "Toilets", toiletIcon); 

      }     
     } 
     else { 
      Code for removing all markers with label "Toilets" 
     } 
    }) 
} 
+0

직접 작성하지 않으면 반복 할 수있는 마커의 전체 배열이 없습니다. –

+0

간단한 해결책은 마커의 배열을 만들고이를 반복하는 것입니다. 맞습니다. 나 자신이 해결책을 찾으면 나쁘지 포스트. –

+0

잠시 후 아래 답변을 게시하겠습니다. –

답변

0

각 마커가 추가되면 추가되는 전역 배열을 만들었습니다. 그런 다음 제거 코드는 간단합니다.

for(var i=0; i< markerArray.length;i++){ 
       if(markerArray[i].getTitle()=="Toilets"){ 
        markerArray[i].setMap(null); 
       } 
      } 
+0

확인. 여러 카테고리의 경우 카테고리 당 하나의 배열을 유지하는 것이 좋습니다. 또한 마커가 제거되면 배열을 지우는 것에 대한 답을 적어 두십시오. 그렇지 않으면 배열이 커지고 늘어나고 응용 프로그램에 클라이언트 측 메모리 누수가 발생합니다. –

0

당신은 확인해야합니다
function foo() { 
    var facData = new kendo.data.DataSource({ 
     ........ 
    }); 
    facData.fetch(function() { 
     if (e.checked == 1) { 
      for (var i = 0; i < facData.view().length; i++) { 
       var dataItem = facData.view()[i]; 
       var dataItemLatLng = new google.maps.LatLng(dataItem.lat, dataItem.lon); 
       var marker = createMarker(dataItemLatLng, "Toilets", toiletIcon); 
       markers.push(marker); 
      } 
     } 
     else { 
      while(markers.length) { 
       markers.pop().setMap(null); 
      } 
     } 
    }); 
} 

createMarker() 만든 마커를 반환합니다.

설명대로, markers 배열은 마커가 맵에서 제거됨에 따라 비워집니다. 이것은 합리적인 것 같습니다. 그렇지 않으면 다음 번에 배열에는 이전 마커에 대한 참조와 모든 새 마커에 대한 참조가 포함됩니다. 많은 경우 시간이 오래 걸리며 마지막 데이터와 동일한 데이터로 생성 된 중복 마커를 의미합니다. 에, 등등.

+0

감사합니다. 게시 했으므로 나 자신도 관리 할 수있었습니다. 아래에서 내 버전을 게시하십시오. 귀하의 것과 유사합니다. –