Множество раскладок на моем текущем месте

У меня есть MapActivity, где я получаю текущее местоположение, и я прикрепляю его на чертеж. Дело в том, что при изменении моего местоположения (методом неизмененного местоположения) на карте появляется еще одно точное место, но первое не исчезает. Другая проблема заключается в том, что onchangedlocation не прикрепляет другой drawable, пока я не коснусь экрана. Что я должен сделать, чтобы появиться мгновенно. Я хочу показать с помощью этой таблицы текущее местоположение автомобиля, чтобы он двигался правильно, как GPS или что-то в этом роде.

Вот моя деятельность, с которой я добавляю точку.

public class CustomPinpoint extends ItemizedOverlay<OverlayItem>{


private ArrayList<OverlayItem> pinpoints = new ArrayList<OverlayItem>();
private Context c;


public CustomPinpoint(Drawable defaultMarker) {
    super(boundCenter(defaultMarker));
    // TODO Auto-generated constructor stub
}
public CustomPinpoint(Drawable m, Context context) {
    // TODO Auto-generated constructor stub
    this(m);
    c = context;
}

@Override
protected OverlayItem createItem(int i) {
    // TODO Auto-generated method stub
    return pinpoints.get(i);
}



@Override
public int size() {
    // TODO Auto-generated method stub
    return pinpoints.size();
}

public void insertPinpoint(OverlayItem item){
    pinpoints.add(item);
    this.populate();
}
  }

и я использую это в моем методе oncreate:

    lm= (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        Criteria crit = new Criteria();

        towers = lm.getBestProvider(crit, false);
        final Location location = lm.getLastKnownLocation(towers);

        if(location != null){
            latit = (int) (location.getLatitude() *1E6);
            longi = (int) (location.getLongitude() *1E6);
            ourLocation = new GeoPoint(latit, longi);
            controller.animateTo(ourLocation);
            controller.setZoom(14);

            if//myItemizedOverlay.addItem(ourLocation, "myPoint1", "myPoint1");
            OverlayItem overlayItem = new OverlayItem(ourLocation, "What's up", "2nd String");
            CustomPinpoint custom = new CustomPinpoint(d, Map.this);
            custom.insertPinpoint(overlayItem);
            overlayList.add(custom);}
            map.setSatellite(false);
            map.setStreetView(true);

и это моя локализация изменилась

   public void onLocationChanged(Location l) {
    // TODO Auto-generated method stub
    latit = (int) (l.getLatitude() *1E6);
    longi = (int) (l.getLongitude() *1E6);
    GeoPoint ourLocation = new GeoPoint(latit, longi);
    OverlayItem overlayItem = new OverlayItem(ourLocation, "What's up", "2nd String");
    CustomPinpoint custom = new CustomPinpoint(d, Map.this);
    custom.insertPinpoint(overlayItem);
    overlayList.add(custom);
}

Я думал, что для нескольких элементов рисования в моем текущем местоположении решение будет отображать только последнюю добавленную точку (геопункт), но я не знаю, как это сделать.

Я был бы очень признателен, если бы вы могли помочь мне с обеими проблемами. Спасибо!

PS: Мне бы хотелось, чтобы рисование выглядело так, как будто оно постоянно движется, когда устройство находится в машине или что-то, что движется с некоторой скоростью.

2 ответа

Решение

Я не вижу определения overlayList в вашем коде, но я думаю, что он должен быть типа ArrayList<OverlayItem>

Поэтому перед тем, как вы создадите overlayList.add(custom), вам нужно вызвать overlayList.clear(). Это оставит вас с маркером последней позиции. Что касается обновления дисплея, я бы подумал, что он должен делать это, когда вы.add. Я полагаю, что вы всегда можете вызвать.invalidate() для просмотра карты, чтобы посмотреть, поможет ли это

 In the onlocationchaged method,add the following line,so that it will make your previous pin disappear..if(!mapOverlays.isEmpty()) 
 { 
 mapOverlays.clear(); 
 mapView.invalidate();}
Другие вопросы по тегам