5

Google API v2 を使用して現在地の住所を取得しようとしています。

これが私がすることです:

Geocoder geocoder = new Geocoder(this, Locale.getDefault());
            List<Address> addresses = null;
            String addressText = "";
            try {
                while (addresses==null){
                    addresses = geocoder.getFromLocation(userLocation.latitude,
                            userLocation.longitude, 1);
                }

                if (addresses != null && addresses.size() > 0) {
                    Address address = addresses.get(0);
                    addressText = String.format(
                            "%s, %s, %s",
                            address.getMaxAddressLineIndex() > 0 ? address
                                    .getAddressLine(0) : "", address
                                    .getLocality(), address.getCountryName());
                }
            } catch (IOException e) {
                e.printStackTrace();
            }

いくつかの投稿を読んだところ、getFromLocation() リクエストが常に結果を取得するとは限らないことがわかりました。だから私はそれをループしてみました。

これはクラッシュしませんが、addressText は常に "" です。なぜですか? アプリに INTERNET アクセス許可が付与されました。GPSは使いません。

userLocation は null ではないので、それは問題ではありません。それを使用してマップにマーカーを追加すると、正常に動作します。厳密にはジオコーダーに問題があるようです。

4

4 に答える 4

5

1.Geocoderを利用する 2.Google APIを利用する 2つの方法で住所を取得できます

このリンクからソリューションを取得できます。それは両方の解決策を持っています。Google API ソリューションの私の回答をご覧ください。

緯度と経度を使用して特定の住所を取得する

于 2013-07-31T09:10:12.557 に答える
-1

デバイスの再起動をお試しください! 私のコードは geocoder.getFromLocation(lat, lng, 1); でクラッシュしていました。しかし、多くのアクセス許可やコードの変更などを試した後、サムスンの電話の電源を入れたり切ったりするだけでうまくいきました... LinuxカーネルはWindowsよりも優れているはずだと思っていました。つまり、再起動は必要ありませんか??

于 2014-09-03T01:23:48.050 に答える