1

最近Androidでプログラミングを始めました。私のアプリでは、「ワシントン」や「ニューヨーク」など、ユーザーの場所を言葉で伝えたいと考えています。緯度と経度を取得できることを見てきましたが、場所を言葉 (おそらく文字列) で伝えたいと考えています。

私はそれを行うことができますか?できるとしたら、どうやって?

どのくらい正確ですか?都市の名前または州のみを教えてもらえますか?

ご協力ありがとうございました!

4

3 に答える 3

1

以下は、スレッドとハンドラーを使用して、UI をブロックせずにジオコーダーの回答を取得する完全なコード例です。

Geocoder 呼び出し手順は、Helper クラスに配置できます

public static String getAddressFromLocation(final Location location, final Context context, final Handler handler) 
     {
    Thread thread = new Thread() {
        @Override public void run() 
         {
            Geocoder geocoder = new Geocoder(context, Locale.getDefault());   
            String result = null;
            try {
                List<Address> list = geocoder.getFromLocation(
                        location.getLatitude(), location.getLongitude(), 1);
                if (list != null && list.size() > 0) 
                    {
                    Address address = list.get(0);
                    // sending back first address line and locality
                    result = address.getAddressLine(0) + ", " + address.getLocality()+","+address.getCountryName();
                        }
                } 
             catch (IOException e)
                {
                Log.e(TAG, "Impossible to connect to Geocoder", e);
                } 
         }
    };
    thread.start();
    return result;
}
于 2013-01-08T11:06:02.963 に答える
1

ジオコーダーを使用して実現できます。そのためのサンプルコード:

Geocoder geocoder = new Geocoder(this, Locale.getDefault());
        try {
            List<Address> addresses = geocoder.getFromLocation(latValue,
                    longValue, 1);

            if (addresses != null) {
                Address returnedAddress = addresses.get(0);
                StringBuilder strReturnedAddress = new StringBuilder(
                        "Address:\n");
                for (int i = 0; i < returnedAddress.getMaxAddressLineIndex(); i++) {
                    strReturnedAddress
                            .append(returnedAddress.getAddressLine(i)).append(
                                    "\n");
                }
                myAddress.setText(strReturnedAddress.toString());
            } else {
                myAddress.setText("No Address returned!");
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            myAddress.setText("Canont get Address!");
        }

緯度と経度の値を取得した後に、このコードを配置するだけです。

于 2013-01-08T11:07:03.777 に答える
-3

これをチェックするだけで、必要なものがすべて手に入ります。

http://developer.android.com/training/basics/location/geocoding.html

于 2013-01-08T11:00:10.600 に答える