I use the following code:
MapView map; LocationManager LM; StringBuilder sbGPS = new StringBuilder(); private Timer mTimer; private MyTimerTask mMyTimerTask; DefaultResourceProxyImpl ResProxy; ArrayList<OverlayItem> items; Overlay currentOverlay; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.main); GPSloc = (TextView)findViewById(R.id.GPSloc); map = (MapView)findViewById(R.id.map); LM = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); mTimer = new Timer(); mMyTimerTask = new MyTimerTask(); mTimer.schedule(mMyTimerTask, 0, 1000); items = new ArrayList<OverlayItem>(); ResProxy = new DefaultResourceProxyImpl(getApplicationContext()); MC = map.getController(); map.setTileSource(new XYTileSource("xUSSR.Roads.Visicom 2.0",null, 14, 19, 256, ".jpg", new String[] {})); map.setClickable(true); map.setUseDataConnection(false); map.setMaxZoomLevel(19); map.setMinZoomLevel(14); MC.setZoom(16); map.setBuiltInZoomControls(false); map.setMultiTouchControls(false); GeoPoint startPoint = new GeoPoint(47.990554, 37.800179); MC.setCenter(startPoint); MC.animateTo(startPoint); public LocationListener location = new LocationListener() { @Override public void onLocationChanged(Location location) { lat = location.getLatitude(); lon = location.getLongitude(); GeoPoint point = new GeoPoint(lat, lon); OverlayItem myLocation = new OverlayItem(null, null, point); Drawable myMarker = map.getResources().getDrawable(R.drawable.human); myLocation.setMarker(myMarker); items.add(0, myLocation); } @Override public void onProviderDisabled(String provider) { checkEnabled(); } @Override public void onProviderEnabled(String provider) { checkEnabled(); } @Override public void onStatusChanged(String provider, int status, Bundle extras) {} }; class MyTimerTask extends TimerTask { @Override public void run() { runOnUiThread(new Runnable() { @Override public void run() { TimeCount = TimeCount +1; if (TimeCount == 1 * 60){ GeoPoint task = new GeoPoint(47.990381, 37.799492); OverlayItem TaskItem = new OverlayItem(null, null, task); Drawable TaskMarker = map.getResources().getDrawable(R.drawable.target_monstr); TaskItem.setMarker(TaskMarker); items.add(1, TaskItem); } if (TimeCount == 2 * 60){ GeoPoint human = new GeoPoint(47.987854, 37.798934); OverlayItem TaskHumanItem = new OverlayItem(null, null, human); Drawable TaskHumanMarker = map.getResources().getDrawable(R.drawable.target_human); TaskHumanItem.setMarker(TaskHumanMarker); items.add(2, TaskHumanItem); } AddMerker(); }); } } public void AddMerker (){ if (!items.isEmpty()){ currentOverlay = new ItemizedIconOverlay<OverlayItem>(items, new ItemizedIconOverlay.OnItemGestureListener<OverlayItem>() { public boolean onItemSingleTapUp(final int index, final OverlayItem item) { return true; } public boolean onItemLongPress(final int index, final OverlayItem item) { return false; } }, ResProxy); map.getOverlays().add(currentOverlay); map.invalidate(); } } I get a crash when adding any marker. What is the trouble? What's wrong?