无法将“我的位置”的地址从自定义“项目覆盖”类转移到另一个“活动”

时间:2011-06-16 09:40:35

标签: android maps reverse-geocoding itemizedoverlay

我对android地图有一个小问题。我添加了一个ItemizedOverlay类来显示我的自定义标记。当我点击标记我想继续对巫婆的另一个活动我会显示标记巫婆的地址标记我的位置。这是我在itemizedOverlay类中使用的代码来获取地址:

  public void getAddressForLocation(final Double lat, final Double lng){
    Thread thr = new Thread(){
        public void run(){
            try{
                gc1 = new Geocoder(mContext);
                adresi = gc1.getFromLocation(lat, lng, 4);
                uiCallback.sendEmptyMessage(0);
            }catch(IOException e){
                e.printStackTrace();
            }
        }
    };
    thr.start();
}

private Handler uiCallback = new Handler(){
        @Override
        public void handleMessage(Message msg){
            if(adresi != null && adresi.size() > 0){
                StringBuilder sb = new StringBuilder();
                Address adresa1 = adresi.get(0);
                for(int i = 0; i < adresa1.getMaxAddressLineIndex(); i++){
                    sb.append(adresa1.getAddressLine(i)).append(" ");
                    myAddress = sb.toString();
                    Log.v("addr", myAddress);
                }
            }
            else{

            }
        }
    };

    @Override 
    public boolean onTap(int index){

        OverlayItem item = getItem(index);
        GeoPoint p1 = item.getPoint();
        Double lat1 = p1.getLatitudeE6()/1E6;
        Double lon1 = p1.getLongitudeE6()/1E6;
        getAddressForLocation(lat1, lon1);

        Intent i = new Intent();
        i.setClass(mContext, Tagging.class);
        b = new Bundle();
        b.putString("adresa", myAddress);
        i.putExtras(b);
        mContext.startActivity(i);
        return true;
    }

我在LogCat中获取地址,但在其他活动上我点了什么并且没有错误。我找不到关于这个问题的例子,我对这一切都是新手,所以任何帮助都将非常感激 提前谢谢

1 个答案:

答案 0 :(得分:1)

在地址完成的线程之前点击叠加层会发生什么?我认为有一点竞争条件。

为什么叠加层必须知道地址?我只需将lat和lng值传递给新活动,然后让活动确定地址。