это мой первый вопрос здесь, так что если что-то не так, скажите.
Теперь у меня есть public class MainMap extends MapActivity
, который использует MyLocationListener
для определения местоположения пользователя и HelloItemizedOverlay .Я получаю определенные POI из XML-файла, в который я хочу добавить маркеры (довольно простые оверлеи).
Пользователь нажимает кнопку, 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 является MapView):
public void clearMapOverlay()
{
this.mv.getOverlays().remove(placesItemizedOverlay);
this.mv.postInvalidate();
this.mv.getOverlays().add(myLoc);
}
Это метод, который вызывает мой метод connect, когда у меня достаточно информации для добавления маркера:
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
.
IЯ искал этот сайт, читая похожие темы (например, этот ), но я действительно не могу найти, что я делаю неправильно.
Зная себя, это, вероятно, что-то очевидное.
Заранее спасибо,
ирвейн