1

逆ジオコーダーの仕組みを教えてください。getFromlocation と getLastKnownLocation を使用してアドレスを見つけるコードがあります。問題は、OnLocationChanged を使用する方法と、必要のないときにリスナーを無効にする方法がわからないことです。私は過去2日間完全に混乱しています。完全な例やリンクを含む優れたリソースを提供できる人がいれば、それは素晴らしいことです..

                Geocoder geocoder = new Geocoder(
                    TrackLogic.this.getApplicationContext(),
                    Locale.getDefault());
            Location locationGPS = locationManager
                    .getLastKnownLocation(LocationManager.GPS_PROVIDER);
            Location locationNetwork = locationManager
                    .getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
            Log.d(TAG, "geocoder works");
4

1 に答える 1

0

まず、LocationManager インスタンスと、場所のルックアップに使用するプロバイダーの名前を取得する必要があります。例えば:

String provider = LocationManager.NETWORK_PROVIDER;
LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);

次に、次のように requestLocationUpdates(...) を呼び出します。

locationManager.requestLocationUpdates(provider, 1000, 0, this);

システムはバックグラウンドスレッドで指定されたプロバイダーを使用して場所の検索を行うため、これはメインスレッドで呼び出すことができます。場所が見つかると、Android システムは onLocationChanged(...) コールバックを呼び出しますが、これをオーバーライドする必要があります。住所検索を行おうとしているので、次のように入力します。

Geocoder geocoder = new Geocoder(this);
geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 10)

探しているものが得られるはずです。

位置情報サービスの使用が終了したら、次のように呼び出すことができます

locationManager.removeUpdates(this)
于 2013-06-28T23:26:15.840 に答える