5

そこで、ユーザーの場所にアクセスし、次のようにジオコーダーで解釈 (逆ジオコーディング) するアプリを作成しました。

Geocoder gc = new Geocoder(ctx, Locale.getDefault());
List<Address> addresses = gc.getFromLocation(latitude, longitude, maxResults); 
Address address = addresses.get(0);
town = address.getLocality();
countryCd = address.getCountryCode();

ただし、ジオコーダー サービスは IOException で非常に信頼性が低く、サービスが頻繁に利用できないことがわかりました。

結果が得られるまでGeocoderサービスをスパムすることを含む解決策を読みました.他の人は、サービスがIPアドレスごとに15秒ごとに1つのヒットしか許可しないと言っています.

デバイスを再起動すると、サービスが再び利用できるようになることがあります。

この主題に対する別の API またはアプローチはありますか?

4

3 に答える 3

0

そこに解決策があります: 特定の住所から緯度と経度を取得するAndroidの問題

別の方法として、Google マップの REST ベースのリバース ジオコーダーを使用できます。おそらくこれをフォールバックとして使用できます。アプリでも Google マップを使用するため、API ルールに精通している必要があります。

于 2011-07-13T12:22:21.743 に答える
-1
public void getAddress(double lat, double lng) {
    Geocoder geocoder = new Geocoder(this, Locale.getDefault());
    try {
        List<Address> addresses = geocoder.getFromLocation(lat, lng, 1);
        Address obj = addresses.get(0);
        String add = obj.getAddressLine(0);
        GUIStatics.currentAddress = obj.getSubAdminArea() + ","
                + obj.getAdminArea();
        GUIStatics.latitude = obj.getLatitude();
        GUIStatics.longitude = obj.getLongitude();
        GUIStatics.currentCity= obj.getSubAdminArea();
        GUIStatics.currentState= obj.getAdminArea();
        add = add + "\n" + obj.getCountryName();
        add = add + "\n" + obj.getCountryCode();
        add = add + "\n" + obj.getAdminArea();
        add = add + "\n" + obj.getPostalCode();
        add = add + "\n" + obj.getSubAdminArea();
        add = add + "\n" + obj.getLocality();
        add = add + "\n" + obj.getSubThoroughfare();

        Log.v("IGA", "Address" + add);
        // Toast.makeText(this, "Address=>" + add,
        // Toast.LENGTH_SHORT).show();

        // TennisAppActivity.showDialog(add);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show();
    }
}

それを使用すると、あなたの助けになるかもしれません。

于 2011-06-29T10:08:07.280 に答える
-1

実装が原因で、おそらく IOException と ServiceUnavailble を取得しています。

このベスト プラクティスを読んでください: http://android-developers.blogspot.com/2011/06/deep-dive-into-location.html

(APIよりも優れています)そしてオープンソース!

于 2011-06-29T10:10:04.803 に答える