2012-07-11 75 views
0

我写了一个简单的地理编码应用程序,但它不工作。我给了所有必要的权限。请有人告诉我我要去哪里出错。提前预览。地理编码示例不能正常工作

public class ForgeocdingActivity extends Activity { 
    Geocoder gc; 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     final EditText ed=(EditText)findViewById(R.id.editText1); 
     Button b1=(Button)findViewById(R.id.button1); 
     final String to_add = ed.getText().toString();  
     b1.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View arg0) 
      { 
       try 
       { 
       List<Address> address2 = gc.getFromLocationName(to_add,3); 

       if(address2 != null && address2.size() > 0) 
       { 
         double lat1 = address2.get(0).getLatitude(); 
         double lng1 = address2.get(0).getLongitude(); 
         Toast.makeText(getBaseContext(), "Lat:"+lat1+"Lon:"+lng1, Toast.LENGTH_SHORT).show(); 
       }  
       } 
       catch(Exception e) 
       { 
        e.printStackTrace(); 
       } 
      } 
     }); 

    } 
} 
+0

首先,您并未初始化Geocoder对象...请在此处发布堆栈跟踪,如果您需要更多帮助,还可以提高您的接受评级:) – Cata 2012-07-11 10:38:56

+0

您是在真实设备上还是在仿真器上测试您的?因为'Geocoder'不能在模拟器上工作 – 2012-07-11 11:02:52

+0

@AditiSharma请看我的答案。 – 2012-07-11 11:48:27

回答

1

请填写下面的代码即

Geocoder geocoder = new Geocoder(this, Locale.getDefault()); 
List<Address> addresses = geocoder.getFromLocation(currentlat, currentlng, 1); 

现在地址列表包含最近的已知区域并将此代码测试到实际设备中。

0

下面是地址解析的工作示例:

Geocoder geocoder = new Geocoder(this, Locale.getDefault()); 
    try { 
     List<Address> list = geocoder.getFromLocation(lat,long, 1); 
     String address = list.get(0).getAddressLine(0) + ", " + list.get(0).getAddressLine(1) + ", " + list.get(0).getAddressLine(2);    
    } catch (IOException e) { 
    e.printStackTrace(); 
    } 

在哪里 “这个”=活动中, “长”=经度, “LAT”=纬度

0

我认为你可以尝试从address1获取纬度和经度。那么您将从以下代码获得经纬度 列表地址= geocoder.getFromLocation(LATITUDE,LONGITUDE,1);