여기가 내 첫 번째 질문이므로 잘못된 것이 있으면 알려주십시오.MapActivity의 ConcurrentModificationException
이제 사용자의 위치는 MyLocationListener
이고 HelloItemizedOverlay은 public class MainMap extends MapActivity
입니다. 마커를 추가하려는 XML 파일에서 특정 POI를 가져옵니다 (꽤 기본적인 오버레이).
사용자가 버튼을 누르면, AsyncTask를 시작 :
private class GetPOITask extends AsyncTask<String, Void, Void> {
protected Void doInBackground(String... params) {
clearMapOverlay();
if(!isBusyAddingOverlays)
{
connect(params[0]);
}
return null;
}
protected void onPreExecute() {
clearMapOverlay();
}
}
MapOverlay을 (this.mv이지도보기이다) 밖으로 지우기 :
public void clearMapOverlay()
{
this.mv.getOverlays().remove(placesItemizedOverlay);
this.mv.postInvalidate();
this.mv.getOverlays().add(myLoc);
}
이것은 내 연결 메소드 호출 방법 마커를 추가하는 데 필요한 충분한 정보가 있습니다.
private void addOverlayToList(int id, GeoPoint point, String title, String description)
{
//Log.e("Debug", "Adding overlay");
placesItemizedOverlay.addOverlay(new POIOverlay(id, point, title, description));
this.mv.getOverlays().add(placesItemizedOverlay);
}
모든 관련 코드가 있어야합니다.
POI의 및지도를 확대하거나지도를 확대하면 문제가 발생하므로 ConcurrentModificationException
이 표시됩니다.
비슷한 스레드 (예 : this one)를 읽고이 사이트를 검색했지만 실제로 잘못하고있는 것을 찾을 수 없습니다.
나 자신을 알면 분명히 분명합니다. 이 addOverlayToList()
가 다른 스레드 (doInBackground()
)에서라고 connect()
에서 호출된다는 사실에서 올 수