У меня есть приложение, в котором я пытаюсь смоделировать отслеживание в реальном времени, поэтому я читаю некоторые данные GPS из класса, в котором я сохранил данные, и пытаюсь поместить эти точки на карту, а также я добавляю маркерна текущую позицию.
Проблема, с которой я сталкиваюсь, заключается в том, что, как только я добавляю оверлей к одной позиции, он остается там ... и когда я читаю следующую позицию и помещаю ее на карту идобавить маркер для этого в .... У меня есть два наложения на моей карте ...
Что я хочу сделать, это наложить наложение на каждую текущую позицию ... как это будет ходить по карте... и у меня есть только один оверлей на карте в той позиции, которую я представляю в то время ... все предыдущие наложения из предыдущих позиций исчезают, но я не могу точно знать, как это сделать.
Надеюсь, вы можете мне помочь!
Это мой код:
public void onCreate(Bundle savedInstanceState)
{
marker = getResources().getDrawable(R.drawable.comet);
marker.setBounds(0,0, marker.getIntrinsicWidth(), marker.getIntrinsicHeight());
}
---------------- Я используюАсинхронный поток для чтения данных GPS -------------------------
protected Void doInBackground(Void... voids)
{
while (true) {
longitude = ServerManager.getInstance().getLastLongitude();
latitude = ServerManager.getInstance().getLastLatitude();
p = new GeoPoint(latitude, longitude);
publishProgress(p);
}
}
protected void onProgressUpdate(GeoPoint... progress1)
{
mapView.getOverlays().add(new SitesOverlay(marker,progress1[0]));
}
}
Наконец, это мой класс, который добавляет болеележит:
private class SitesOverlay extends ItemizedOverlay<OverlayItem>
{
private List<OverlayItem> items = new ArrayList<OverlayItem>();
private Drawable marker = null;
GeoPoint gp1;
public SitesOverlay(Drawable marker,GeoPoint gp1)
{
super(marker);
this.marker = marker;
this.gp1=gp1;
items.add(new OverlayItem(gp1,"Your location", "You are here!"));
populate();
}
@Override
protected OverlayItem createItem(int i)
{
return (items.get(i));
}
@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow)
{
super.draw(canvas, mapView, shadow);
boundCenterBottom(marker);
}
@Override
public int size()
{
return (items.size());
}
}