0

を使用してGeocoder、住所、郵便番号、国の値を含めて現在地を特定しています。

ただしgetFromLocation(latitude,longitude,number)、既知の場所属性を使用していてもnullを返します(緯度:40,645081経度:22,988892)。

Eclipseを使用して、AVD(APIレベル7)でアプリをテストしています。

前もって感謝します。

getFromLocationこれは、関数が使用される場所のスニペットです。

private void updateWithNewLocation(Location location){
    String latLongString;
    TextView myLocationText;
    myLocationText = (TextView)findViewById(R.id.myLocationText);

    String addressString = "No address found";

    if (location != null) {
        double lat = location.getLatitude();
        double lng = location.getLongitude();
        latLongString = "Lat:" + lat + "\nLong:" + lng;

        //double latitude = 73.147536;
        //double longitude = 0.510638;
        Geocoder gc = new Geocoder(this, Locale.getDefault());

        try {
            List<Address> addresses = gc.getFromLocation(lat, lng, 1);
            Log.v("TRY_BODY", "All addresses are: " + addresses);
            StringBuilder sb = new StringBuilder();
            if (addresses.size() > 0) {
                Log.v("IF_BODY", "All addresses are: " + addresses);
                Address address = addresses.get(0);
                for (int i = 0; i < address.getMaxAddressLineIndex(); i++){
                    sb.append(address.getAddressLine(i)).append("\n");
                    sb.append(address.getLocality()).append("\n");
                    sb.append(address.getPostalCode()).append("\n");
                    sb.append(address.getCountryName());
                }
                addressString = sb.toString();
            }
        } catch (IOException e) {}
    } 
    else {
        latLongString = "No location found";
    }

    myLocationText.setText("Current Position:\n"+latLongString + "\n" + addressString);
}
4

1 に答える 1

0

その非常に一般的な、時にはグーグルサーバーはアドレスを返さないので、agianを試してみる必要があります、それはサーバーがビジーであるか、または何か他のものである可能性があります、ループのある任意のスレッドでこのコードを実行できます、そしてアドレスが正常に来る場合、ループを停止すると、スレッドが終了します。

于 2012-08-02T08:48:04.157 に答える