0

緯度と経度を読み取り可能な住所に逆ジオコーディングするアプリがあります。以下にコードのサンプルを示します。

    protected List<Address> doInBackground(Double... params) {
            try {

                List<Address> addresses = geoCoder.getFromLocation(mylat,
                        mylong, 1);
                StringBuilder sBuilder = new StringBuilder();
                if (addresses.size() > 0) {
                    Address address = addresses.get(0);

                    for (int i = 0; i < address.getMaxAddressLineIndex(); i++) {
                        /**
                         * Returns a line of the address numbered by the
                         * given index (starting at 0), or null if no such
                         * line is present.
                         */
                        sBuilder.append(address.getAddressLine(i)).append(
                                "\n");
                        ////////////
                        ////////////
                        // sBuilder.append(address.getLocality()).append("\n");
                        //sBuilder.append(address.getPostalCode()).append("\n");        
                    }// end for
                    addressString = sBuilder.toString();

                }// end if
                return geoCoder.getFromLocation(params[0], params[1], 1);
            } catch (IOException e) {
                e.printStackTrace();
                return null;
            }// end catch
        }// end doInBackground method

PostalCode が null の場合は何も出力せず、値を受け取った場合は残りの詳細とともに表示するように変更したいと思います。問題は、郵便番号を使用していない国に住んでいるため、コードのその部分が現在コメントアウトされていることです。郵便番号を使用している国にいる場合はアプリに郵便番号を表示し (ほとんどの場合)、私の国または郵便番号を使用していない同様の国にいる場合は、郵便番号がないことを無視するようにしたいと思います。

これを許可するためにどのような変更を加える必要があるかを誰かが推奨できますか? ここに文字列の追加を処理するロジックを追加する必要があると思います:

sBuilder.append(address.getPostalCode()).append("\n");

ありがとう。:)

4

1 に答える 1

1

そこに条件を1つ追加するだけでよいと思います。

if (address.getPostalCode() != null)
{
    sBuilder.append(address.getPostalCode()).append("\n");
}
else
{
    // do nothing.
}

それとも、あなたが望むものではありませんか?

于 2012-11-02T12:33:56.587 に答える