1

ユーザーが自分の場所を使用している都市を把握しようとしています。LocationManager と Geocoder を使用して、経度と緯度からいくつかの素晴らしいデータを取得しましたが、1 つも取得できません。subAdminArea 別名都市。郵便番号を含む他のすべてが受信されても​​、常にnullを返します。足りないものはありますか?

基本的に、これはデータを取得するために呼び出すメソッドです。

public String getLocation(Locale locale, Context context, boolean city, boolean postal, boolean state_prov) throws IOException{
    LocationManager locMan = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
    LocationListener locList = new MyLocList();
    Geocoder gC = new Geocoder(context,locale);
    Location gpsLocation = locMan.getLastKnownLocation(locMan.GPS_PROVIDER);
    locMan.requestLocationUpdates(locMan.NETWORK_PROVIDER, 500, 200, locList);
    Location networkLocation = locMan.getLastKnownLocation(locMan.NETWORK_PROVIDER);
    if (city)
        return (gC.getFromLocation(networkLocation.getLatitude(), networkLocation.getLongitude(), 1).get(0).getSubAdminArea());
    else if (postal)
        return (gC.getFromLocation(networkLocation.getLatitude(), networkLocation.getLongitude(), 1).get(0).getPostalCode());
    else if (state_prov)
        return (gC.getFromLocation(networkLocation.getLatitude(), networkLocation.getLongitude(), 1).get(0).getAdminArea());
    else
        return "";
}

このメソッドへの呼び出しは、次の方法で行われます。

String city = getLocation(Locale.getDefault(),getBaseContext(),true,false,false);

いくつかの調査で見つけた他の唯一のオプションは、にリクエストを送信することです

http://maps.googleapis.com/maps/api/geocode/json?address=POSTALCODE&sensor=true

郵便番号に基づいてその場所の JSON が返されるので、これを解析できますが、都市を見つけるのは大変な作業のようです。

私が見逃しているものはありますか?それとも私が間違ったことをしましたか?Androidの位置情報サービスは初めてです。

4

2 に答える 2

1

これを試して:

   Geocoder gc = new Geocoder(context, Locale.getDefault());
    List<Address> addresses = gc.getFromLocation(latitude, longitude, maxResults);

StringBuilder sb = new StringBuilder();
for (int i = 0; i < addresses.getMaxAddressLineIndex(); i++)
 Log.d("=Adress=",addresses.getAddressLine(i));
}

郵便番号、都市、国、...を取得します。

于 2012-08-21T02:24:14.117 に答える
0

私はこの答えを使用しましたが、完全にうまくいきました。この質問で最初に抱えていた問題にもかかわらず、場所を取得できました。

于 2013-11-26T22:21:43.860 に答える