Я пытаюсь сделать так, чтобы при изменении местоположения рисованный объект печатался в местоположении пользователя, и он отлично работал, но когда местоположение менялось во второй раз, чертежный материал из первого местоположения все еще виден. Я хочу, чтобы отображалось только последнее местоположение, а не все места, где местоположение изменилось.
Я попытался удалить overlayItem при запуске метода onLocationChanged и снова назначить overlayItem при вызове location, но это не сработало.
Вот код для onLocationChanged
public void onLocationChanged(Location location) {
if (location != null) {
double lat = location.getLatitude();
double lng = location.getLongitude();
userLocation = new GeoPoint((int) lat * 1000000, (int) lng * 1000000);
OverlayItem usersLocationIcon = new OverlayItem(userLocation, null, null);
LocationPin myLocationPin = new LocationPin(userIcon, MainActivity.this);
myLocationPin.getLocation(usersLocationIcon);
overlayList.add(myLocationPin);
}
}
А вот код для класса LocationPin
import java.util.ArrayList;
import android.content.Context;
import android.graphics.drawable.Drawable;
import com.google.android.maps.ItemizedOverlay;
import com.google.android.maps.OverlayItem;
public class LocationPin extends ItemizedOverlay<OverlayItem>{
private ArrayList<OverlayItem> locationPoint = new ArrayList<OverlayItem>();
private Context context;
public LocationPin(Drawable arg0) {
super(boundCenter(arg0));
// TODO Auto-generated constructor stub
}
public LocationPin(Drawable marker, Context context) {
this(marker);
// TODO Auto-generated constructor stub
}
@Override
protected OverlayItem createItem(int i) {
// TODO Auto-generated method stub
return locationPoint.get(i);
}
@Override
public int size() {
// TODO Auto-generated method stub
return locationPoint.size();
}
public void getLocation(OverlayItem item){
locationPoint.add(item);
this.populate();
}
}