Как я могу вернуть местоположение, нажатое на MapActivity, из метода Overlay onTap

У меня есть действие, в котором есть кнопка, которая открывает новую MapActivity для выбора местоположения, нажав на карту.

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

Любые идеи?


person Fernando Gallego    schedule 30.08.2010    source источник


Ответы (2)


Решено так:

class tapOverlay extends Overlay
{
    public GeoPoint lastTap=null;
    String strCalle;
    private Context context;    
    public tapOverlay(Context c)
    {
        this.context=c;     
    }
}
@Override
public boolean onTap(GeoPoint p, MapView mapView) {
    lastTap = p;
    mapView.getController().animateTo(p);
    ...
    strCalle = sb.toString(); //from geocoder
    ...

    devolverResultado();
    return true;        
}    

private void devolverResultado()
{
    MapActivity ma = (MapActivity) context;
    Intent i = new Intent();
    Bundle b = new Bundle();
    b.putInt("dlat", lastTap.getLatitudeE6());
    b.putInt("dlng", lastTap.getLongitudeE6());
    b.putString("calle",strCalle);
    i.putExtras(b);
    ma.setResult(Activity.RESULT_OK, i);
    ma.finish();
}
person Fernando Gallego    schedule 30.08.2010

Вызовите новую активность, используя намерение...

Затем используйте onActivityResult(int, int, Intent) для вызова нового действия из текущего действия..... U должен получить данные из нового действия, когда вы закончите вызываемое действие, поскольку вызывающее действие помещается в стек ...

Надеюсь это поможет ... :)

person Flash    schedule 30.08.2010
comment
Ну, я решил это, но не так. Я передал контекст конструктору наложения, а затем, в методе onTap, я привел его обратно к объекту MapView, чтобы иметь возможность вызывать метод setResult, и это сработало. - person Fernando Gallego; 30.08.2010