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

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

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

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 30 августа 2010

Решено так:

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 голос
/ 30 августа 2010

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

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

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

...