1

ユーザーの現在の場所の郵便番号を取得しようとしています。MyActivity に teditText があり、このアクティビティから取得した郵便番号に基づいて入力する必要があります。

public class LocationActivity extends MyActivity {
    double LATITUDE;
    double LONGITUDE;

    Geocoder geocoder = new Geocoder(this, Locale.ENGLISH); 
    {
        try {
            List<Address> addresses = geocoder.getFromLocation(LATITUDE, LONGITUDE, 1);

            if(addresses != null) {
                Address returnedZip = addresses.get(0);
                StringBuilder currentZip = new StringBuilder("Address:\n");
                for(int i=0; i<returnedZip.getMaxAddressLineIndex(); i++) {
                    strcurrentZip.append(returnedZip.getPostalCode());
                }
                m_zip.setText(strcurrentZip.toString());
            }
            else {
                m_zip.setText("No zip returned!");
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            m_zip.setText("zip not found!");
        }
    }
}

応答がありません。アプリの logcat にはエラーは表示されませんが、入力したい editText フィールドは空白のままです。

4

2 に答える 2

3

ここ ...

XPath xpath = XPathFactory.newInstance().newXPath();
String expression = "//GeocodeResponse/result/address_component[type=\"postal_code\"]/long_name/text()";
InputSource inputSource = new InputSource("https://maps.googleapis.com/maps/api/geocode/xml?latlng="+VARIABLECONTAININGLATITUDE+","+VARIABLECONTAININGLONGITUDE+"&sensor=true");
String zipcode = (String) xpath.evaluate(expression, inputSource, XPathConstants.STRING);

ここで、VARIABLECONTAININGLATITUDE と VARIABLECONTAININGLONGITUDE は、GPS または選択したロケーション プロバイダーからの緯度と経度です。

また、マニフェストで許可インターネットとマニフェストで場所の許可が必要です

于 2012-06-30T00:07:54.820 に答える
1

郵便番号を取得するためのコードの下に書いてください

Geocoder geocoder = new Geocoder(this, Locale.getDefault());
List<Address> addresses = geocoder.getFromLocation(currentlat, currentlng, 1); 

現在、アドレスのリストには、最も近い既知のエリアが含まれています。Address オブジェクトには getPostalCode() 関数があります。最初のオブジェクトをつかみ、それが郵便番号であることを見つけます。

于 2012-06-30T04:41:26.817 に答える