Как удалить текущий контакт местоположения с карты в Android, сохраняя другие контакты - PullRequest
0 голосов
/ 26 января 2012

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

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

Будут признательны за любые другие комментарии к коду.

Imports...

public class MapOne extends MapActivity implements LocationListener {

... fields


@Override
protected void onCreate(Bundle icicle) {
    ....onCreate initialisations
}

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    compass.disableCompass();
    lm.removeUpdates(this);
    super.onPause();

}

@Override
protected void onResume() {
    // TODO Auto-generated method stub
    compass.enableCompass();
    lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 20, this);
    super.onResume();
}

@Override
protected boolean isRouteDisplayed() {
    return false;
}

public void onLocationChanged(Location l) {
    // TODO Auto-generated method stub
            lat = (int)(l.getLatitude() *1E6);
            longi = (int)(l.getLongitude() *1E6) ;

            GeoPoint ourLocation = new GeoPoint(lat, longi);
            OverlayItem overlayItem = new OverlayItem(ourLocation, "Hey!", "What's up!?");
            CustomPinpoint custom = new CustomPinpoint(customMarker, Map.this);
            custom.insertPinpoint(overlayItem);
            overlayList.add(custom);

}

}

Точный класс для справки, если требуется.

public class Pinpoint 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);
    setC(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();
}

public Context getC() {
    return c;
}

public void setC(Context c) {
    this.c = c;
}

}

1 Ответ

0 голосов
/ 26 января 2012

Если вы хотите добавить Пин-код, который соответствует текущему местоположению пользователя, вы можете использовать com.google.android.maps.MyLocationOverlay .... это также обеспечит вас необходимыми слушателями. Вы также можете переопределить его onDraw () Вы можете добавить этот оверлей так же, как и любой другой оверлей ... не забудьте вызвать myLocationOverlay.enableMyLocation (), чтобы получить изменения местоположения.

...