2011-02-28 76 views
0

我正在實現一個簡單的地理編碼示例,其中用戶輸入地址並獲取其經度和緯度。簡單的地理編碼示例

   addr = Area_edtxt.getText().toString(); 
       try { 
        list_addr = gc.getFromLocationName(addr, 1); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        Log.d("Location lookup failed", e.getMessage()); 
       } 
       if (list_addr != null && list_addr.size() > 0){ 
        latitude = list_addr.get(0).getLatitude(); 
        longitude = list_addr.get(0).getLongitude(); 
        latitude_edtxt.setText(latitude.toString()); 
        longitude_edtxt.setText(longitude.toString()); 
       }else { 
        latitude_edtxt.setText("Address not found"); 
       } 

但顯示我的錯誤:無法打開堆棧跟蹤文件「/data/anr/traces.txt」:權限被拒絕。

+0

它的崩潰。我認爲你的日誌中有一個地方存在一個禁止。 – Reno 2011-02-28 06:38:48

+0

它顯示未捕獲的異常警告和空指針異常錯誤 – AndroGeek 2011-02-28 06:48:48

+0

您是否在模擬器中運行您的應用程序?或者您是否安裝了自定義ROM? – n3utrino 2011-02-28 06:50:24

回答

1

對於一個快速的嘗試,你可以使用的AsyncTask http://developer.android.com/reference/android/os/AsyncTask.html

private class GeocodeTask extends AsyncTask<String, Integer, List> { 
protected Long doInBackground(String... address) { 
    try { 
     return gc.getFromLocationName(address[0], 1) 
     } catch (IOException e) { 
       // TODO Auto-generated catch block 
       Log.d("Location lookup failed", e.getMessage()); 
    } 
} 

protected void onPostExecute(List result) { 
    if (list_addr != null && list_addr.size() > 0){ 
     latitude = list_addr.get(0).getLatitude(); 
     longitude = list_addr.get(0).getLongitude(); 
     latitude_edtxt.setText(latitude.toString()); 
     longitude_edtxt.setText(longitude.toString()); 
    }else { 
     latitude_edtxt.setText("Address not found"); 
    } 
} 

}

new GeocodeTask().execute(addr); 
+0

thx .....它返回地址找不到...讓我修改我的代碼... – AndroGeek 2011-02-28 07:55:41

+1

我有錯誤:轉發地理編碼:沒有功能在Glocation中。同樣的錯誤,無論我輸入的地址。 – AndroGeek 2011-02-28 08:51:52