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

1

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

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

Любые идеи?

Теги:
overlay
android-mapview

2 ответа

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();
}
1

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

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

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

  • 0
    Ну, я решил это, но не так. Я передал контекст в конструктор оверлеев, а затем в методе onTap преобразовал его обратно в объект MapView, чтобы иметь возможность вызывать метод setResult, и он работал

Ещё вопросы

Сообщество Overcoder
Наверх
Меню