1

スタック オーバーフローからの多くの質問を参照し、上記の手順を実装しました。しかし、アドレスを取得できません。何か見逃した場合はお知らせください.. ? myLoc = (TextView) findViewById(R.id.id1);

Geocoder geocoder = new Geocoder(getBaseContext(),Locale.getDefault());
try {
    address = geocoder.getFromLocation(latitude, longitude, 1);
                if (address.size() > 0) {
        for (int i = 0; i < address.get(0)
                .getMaxAddressLineIndex(); i++) {
            display = "";
            display += address.get(0).getAddressLine(i)
                    + "\n";
        }
        }

} catch (Exception e2) {
    // TODO: handle exception
}
myLoc.setText("Current Location:"+display);
System.out.println(display);
4

4 に答える 4

1
  1. getMaxAddressLineIndex()はゼロから始まるインデックスを返すため、for ループ条件は0 < maxIndexではなく0 <= maxIndexにする必要があります
  2. display = "";を割り当てることにより、反復ごとに以前のアドレス行を上書きします。したがって、最後のアドレス行のみになります。それはわざとですか?
于 2012-08-21T14:40:29.547 に答える
1

リバース ジオ コーディングと Google API を使用して、緯度と経度から住所を取得できます。

リバース ジオ コーディング:

 double currentLatitude;
    double currentLongitude;

void getAddress(){
        try{
            Geocoder gcd = new Geocoder(this, Locale.getDefault());
            List<Address> addresses = 
                gcd.getFromLocation(currentLatitude, currentLongitude,100);
            if (addresses.size() > 0) {
                StringBuilder result = new StringBuilder();
                for(int i = 0; i < addresses.size(); i++){
                    Address address =  addresses.get(i);
                    int maxIndex = address.getMaxAddressLineIndex();
                    for (int x = 0; x <= maxIndex; x++ ){
                        result.append(address.getAddressLine(x));
                        result.append(",");
                    }               
                    result.append(address.getLocality());
                    result.append(",");
                    result.append(address.getPostalCode());
                    result.append("\n\n");
                }
                addressText.setText(result.toString());
            }
        }
        catch(IOException ex){
            addressText.setText(ex.getMessage().toString());
        }
    }

Google API:緯度と経度から住所を返すこの API を参照してください

http://maps.googleapis.com/maps/api/geocode/json?latlng=17.734884,83.299507&sensor=true

詳細を知るには、これを読んでください

于 2012-08-21T14:18:14.143 に答える
0

もう 1 つの良いアイデアは、LocationListener インターフェイスを実装し、LocationManagerrequestLocationUpdates()メソッドを使用して Activity をリスナーとして登録することです。onLocationUpdate()その後、デバイスの場所が変更されるたびに通知されるようにオーバーライドできます。requestLocationUpdates()別の更新を受け入れるまでに経過する必要がある最小時間と、更新を取得する前にデバイスが移動する必要がある距離をメソッドに提供します。

于 2012-08-21T14:25:29.890 に答える