2012-06-19 2 views
0

지도에서 내 itemizedoverlay를 모두 제거하려고하지만 그 이유를 알 수 없습니다. 나는 많은 자습서를 읽은 그들 모두에 다음과 같은 해결책이 :Android :지도를 새로 고침하고 모든 itemizedoverlay를 지우십시오.

 itemizedoverlay.clear();    
     mMapView.invalidate(); 

그러나이 작동하지 않습니다는!

내가하는 우선 내가합니다 (onPreExecute에서())를 말고, AsyncTask를이 작업을 수행하기 위해 노력하고있어 :

 itemizedoverlay.clear();    
     mMapView.invalidate(); 

나는 내 서버에서 내 모든 GeoPoint의를 얻을, 나는를 만들 myitemizedoverlay 객체의 목록을합니다 (doInBackground에서())와 나는이 같은지도에 넣어합니다 (onPostExecute에서()) : 내 코드 내지도를 업데이트하지 않는 이유는

  for (int i = 0; i < myListOfOverlayItem.size(); i++) { 
       itemizedoverlay.addOverlay(myListOfOverlayItem.get(i)); 
      } 
      overlays.add(itemizedoverlay); 

? : - :

public void clear(){ 
    this.m_overlays.clear(); 
    setLastFocusedIndex(-1); 
    populate(); 
} 

감사

+0

'doInBackground()'에서'onPostExecute()'에 오버레이를 만들고'clear()'를 실행 한 다음 오버레이를 추가하고'invalidate'를 호출하십시오. onPreExecute()가 ** UI 스레드 ** 또는 ** 백그라운드 스레드 **에서 실행되는 경우 설명서를 확인하십시오. 백그라운드 스레드에서 실행되는 경우 맵보기를 무효로하는 것이 안전하지 않다고 생각합니다 **. – JJD

답변

3

여기

mMapView.getOverlays().clear(); 

더 많은 정보 /의 javadoc을 시도해보십시오 https://developers.google.com/maps/documentation/android/reference/com/google/android/maps/MapView

+0

귀하의 방법을 사용하는 경우지도 새로 고침은 myLocationOverlay를 삭제하고 다른 항목 화 된 오버레이는 삭제하지 않습니다. = ( – michoprogrammer

+0

yea ...이 일이 일어날 것입니다. 위치 오버레이에 대한 참조를 유지하고 명확한 방법으로 getOverlays(). clear() 호출 후 다시 추가합니다. – petey

+0

시도하고 아무 것도 .... 모든 오래된 itemoverlays가지도에 남아 있습니다 ... – michoprogrammer

0

당신이 할 마십시오 오버레이/

이것은 분명한의 코드는 .clear() 프로 시저의 시작 부분과 mMapView.invalidate() 끝에?

+0

절차 시작시 2 가지 기능을 시작합니다. 비동기 작업의 onPreExecute(). – michoprogrammer

+0

overlays.clear 대신 itemizedoverlay.clear를 수행 했으므로 mMapView.invalidate가 오버레이에 새 항목을 추가 한 다음에 _ 수행해야합니다. 글쎄, 내 자신의 의견을 매우 유용하지 않을 수도 있습니다지도와 함께 고군분투 오전 :) – perza

관련 문제