如何从Overlay onTap方法返回按下MapActivity的位置

时间:2010-08-30 10:05:39

标签: android overlay android-mapview

我的活动有一个按钮,可以通过点击地图打开新的MapActivity来选择位置。

地图有覆盖覆盖onTap方法以获取位置,但我想将该位置返回到上一个活动但是,我不知道如何将地理点返回到mapactivity以调用setResult( )和finish()方法,因为我无法从Overlay.onTap方法中调用它们。

有什么想法吗?

2 个答案:

答案 0 :(得分: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 :(得分:1)

使用意图...

调用新活动

然后,使用onActivityResult(int,int,Intent)从当前活动中调用新活动..... 当你完成被调用的活动时,U应该从新活动中获取数据,因为调用活动放在堆栈上...

希望这有助于......:)