2012-04-19 15 views
1

を表示するためにジオコーダを使用して、私はマップ活性に対するユーザーの緯度と経度を表示するには、このメソッドを持っている:ユーザの位置住所

public void animateMap(Location location){ 
     double lat = location.getLatitude(); 
     double lng = location.getLongitude(); 

     Toast.makeText(MyMapActivity.this, 
       "Sie sind an\n" + lat + "\n" + lng, Toast.LENGTH_SHORT) 
       .show(); 
     GeoPoint point = new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6)); 
     mapController.animateTo(point, new Message()); 
     mapOverlay.setPointToDraw(point); 

    } 

私の方法でジオコーダを実装する方法は?

Geocoder geocoder = new Geocoder(context, Locale.ENGLISH); 
     geocoder.getFromLocation(lat, lng, 1); 
     List<Address> ls=new ArrayList(); 
     ls= geocoder.getFromLocation(lat, lng, 1); 
     String myLocation = ls.get(0).getSubAdminArea(); 

あなたはこのクラスによって返されたすべての情報を確認し、最もあなたにフィットするかを選択することができますので、トースト

答えて

1

あなたは

Geocoder myLocation = new Geocoder(context, Locale.ENGLISH); 
List<Address> myList= myLocation.getFromLocation(lat, lng, 1); 
Address add = myList.get(0); 
String addressString = add.getAddressLine(0); 
String country = add.getCountryName();      
String city = add.getLocality(); 
を使用
+0

GeoCoderが指定された場所から場所を見つけることができなかった場合、エラーが発生します。アプリケーションは強制的に閉じられます。 –

1

最も簡単な実装では、ジオコーダクラスを使用している座標のではなく、場所のアドレスが表示されます。それは、国名からランドマークの名前、近隣の郵便番号...あなたが必要とするかもしれないほとんど何も含まれています。

Googleがこの場所に関する情報を持っていない場合は、null文字列が返されます。

だからあなたのためにexapmpleはそのようなものでなければなりません:

public void animateMap(Location location){ 
    double lat = location.getLatitude(); 
    double lng = location.getLongitude(); 


String myLocation; 
try{ 
      Geocoder geocoder = new Geocoder(context, Locale.ENGLISH); 
     geocoder.getFromLocation(lat, lng, 1); 
     List<Address> ls=new ArrayList(); 
     ls= geocoder.getFromLocation(lat, lng, 1); 
     myLocation = ls.get(0).getSubAdminArea(); 
}catch(Exception e){ 
    myLocation="Sorry, we have no information about this location"; 
} 



    Toast.makeText(MyMapActivity.this, 
      "Sie sind an\n" + myLocation , Toast.LENGTH_SHORT) 
      .show(); 
    GeoPoint point = new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6)); 
    mapController.animateTo(point, new Message()); 
    mapOverlay.setPointToDraw(point); 

} 
+0

あまりにも悪いですが、私はmyLocationにnullを持っています。どんな解決策ですか? – hectichavana

+0

subadminareaはadminareaなどを試すことができる非常に詳細な情報ですので、この場所のための少なくともいくつかの基本的なinoframtionを持つことができます! –

0

ジオコーダからあなたの場所でアドレスのリストを取得し、null or empty resultをチェック:

Geocoder geocoder = new Geocoder(getApplicationContext,Locale.getDefault()); 
List<Address> address = geocoder.getFromLocation(lat, long, 1); 
String myLocation = ""; 
if(address != null && !address.isEmpty()) 
{ 
    myLocation = address.get(0).getSubAdminArea(); 
}