2013-09-26 162 views
0

使用地理編碼器從地址獲取座標。當我從Geocoder獲得答案時,我向用戶展示一個對話框,以便他可以選擇正確的地址(可以是遍佈世界各地的許多同名街道)。這是方法:在繼續執行之前等待對話框中的用戶響應

private LatLng parsearDireccion(String direccion) { 

    Geocoder coder = new Geocoder(c); 

    try { 
     adress = (ArrayList<Address>) coder.getFromLocationName(direccion, 30); 

     if(adress.size()>0){ 
      AlertDialog.Builder builderSingle = new AlertDialog.Builder(
        LeaveParamsActivity.this); 

      builderSingle.setTitle(getString(R.string.selectaddress)); 
      final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
        c, 
        android.R.layout.select_dialog_singlechoice); 
      for(int i=0;i<adress.size();i++){ 
       String ciudad=adress.get(i).getLocality(); 
       String calle=adress.get(i).getThoroughfare(); 
       if(calle==null){ 
        calle=adress.get(i).getAddressLine(0); 

       } 


       if(ciudad==null){ 
        ciudad=adress.get(i).getSubLocality(); 

       } 
       if(ciudad==null){ 
        ciudad=adress.get(i).getAdminArea(); 

       } 
       arrayAdapter.add(calle+","+ciudad); 
      } 

      builderSingle.setAdapter(arrayAdapter, 
        new DialogInterface.OnClickListener() { 

       @Override 
       public void onClick(DialogInterface dialog, int which) { 

        Address location = adress.get(which); 
        lat = location.getLatitude(); 
        lon = location.getLongitude(); 
        dialog.dismiss(); 

       } 
      }); 
    builderSingle.show(); 
     } 

    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    LatLng coords=new LatLng(lat, lon); 
    return coords; 
} 

的問題是,我得到對話框選項用戶點擊前返回...等,座標爲null。我該如何等待用戶單擊對話框中的某個選項,然後繼續執行該程序?

謝謝。

回答

0

使它無效並刪除回報,只是讓另一個方法返回的經緯度,並把它在對話框中,只是把它作爲一個變量

+0

我怕我不明白...的經緯度來自用戶選擇對話框。用戶在對話框中選擇適當的街道(地址對象),然後從用戶選擇的地址中獲得LatLng。 – Fustigador

+0

所以當他們點擊存儲緯度和經度,並製作一個公共的LatLng,甚至是靜態的,你可以訪問你需要的地方 – JRowan

+0

問題是我需要立即LatLng在我出現Dialog之後...並執行程序不會等待用戶點擊繼續... – Fustigador

相關問題