How to get postal code using user current location in android
Asked Answered
S

4

5

I am trying to get postal code, but I am unable to get zipcode(postalcode). I can able to get current city but when I try to get the zipcode it's giving me a null pointer exception. Can anyone help me.

final Geocoder gcd = new Geocoder(getApplicationContext(),
                Locale.getDefault());

List<Address> addresses = gcd.getFromLocation(latitude, longitude, 1);
if (addresses.size() > 0)                                   Log.d(addresses.get(0).getLocality()); // I can get city name here.
Log.d(addresses.get(0).getPostalCode();// here i am getting nullpoiter exception
Sanjay answered 2/9, 2013 at 8:12 Comment(11)
possible duplicate of How to get zip code or area code of the current location in android?Eskil
Read the second comment on the accepted answer in the link.Eskil
Other AddressLine means?Sanjay
This means - developer.android.com/reference/android/location/…, double, int). Then addresses.get(1)).getPostalCode() or try with 2,3,4. After you read this - take a look here - #16516182Eskil
When I used like this i got the following exception 09-02 java.lang.IndexOutOfBoundsException: Invalid index 3, size is 1Sanjay
Yes, it's becasue you're calling List<Address> addresses = gcd.getFromLocation(latitude, longitude, 1);. Change the last digit to 3,4 or 5.Eskil
What is the maximum value for that last digit.What it means? can you give some clarification?Sanjay
The information is in the second link, but it failed to paste I think - try all, which was marked with "`````" -> http://developer.android.com/reference/android/location/Geocoder.html#getFromLocation(double, double, int)Eskil
But I can get the city name.Y should i didn't get postal code? What is the reason?Sanjay
Strange ... You can do it with another approach, by using this -> developers.google.com/maps/documentation/geocoding . However, paste the manifest here please.Eskil
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" /> <uses-feature android:name="android.hardware.camera" > </uses-feature> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />Sanjay
S
6

I Used google webservice to get the zipcode.

The following is the google web service

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

here lattitude and longitude. so replace those values and you will get response and parse them and get postal code.

Sanjay answered 13/9, 2013 at 7:37 Comment(0)
S
8

Try to use android built-in Geocoder to get details from latitude and longitude without calling google location api as below :

Initialize Gecoder using Context :

final Geocoder gcd = new Geocoder(context);

Get Address as result from Lat-Long, Here (10) max result.

List<Address> addresses = gcd.getFromLocation(latitude, longitude, 10);

Iterate to result get required location details :

for (Address address : addresses) {
    if(address.getLocality()!=null && address.getPostalCode()!=null){
        Log.d(address.getLocality());
        Log.d(address.getPostalCode();
       break;
    }
}
Superpower answered 2/9, 2013 at 8:39 Comment(1)
But I should get postalcode? I know the above solution but I need to get postal code..Sanjay
A
7
    Geocoder geocoder = new Geocoder(this, Locale.ENGLISH);
    List<Address> addresses = geocoder.getFromLocation(latitude, longitude, 1);
    Address address=null;
    String addr="";
    String zipcode="";
    String city="";
    String state="";
    if (addresses != null && addresses.size() > 0){

            addr=addresses.get(0).getAddressLine(0)+"," +addresses.get(0).getSubAdminArea();
                 city=addresses.get(0).getLocality();
                 state=addresses.get(0).getAdminArea();

                 for(int i=0 ;i<addresses.size();i++){
                     address = addresses.get(i);
                     if(address.getPostalCode()!=null){
                         zipcode=address.getPostalCode();
                         break;
                     }

                }
Antimasque answered 10/4, 2014 at 15:56 Comment(0)
S
6

I Used google webservice to get the zipcode.

The following is the google web service

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

here lattitude and longitude. so replace those values and you will get response and parse them and get postal code.

Sanjay answered 13/9, 2013 at 7:37 Comment(0)
H
1

I have utility method to grab postcode which is pretty neat and works fine..

public static String getPostalCodeByCoordinates(Context context, double lat, double lon) throws IOException {

    Geocoder mGeocoder = new Geocoder(context, Locale.getDefault());
    String zipcode=null;
    Address address=null;

    if (mGeocoder != null) {

        List<Address> addresses = mGeocoder.getFromLocation(lat, lon, 5);

        if (addresses != null && addresses.size() > 0) {

            for (int i = 0; i < addresses.size(); i++) {
                address = addresses.get(i);
                if (address.getPostalCode() != null) {
                    zipcode = address.getPostalCode();
                    Log.d(TAG, "Postal code: " + address.getPostalCode());
                    break;
                }

            }
            return zipcode;
        }
    }

    return null;
}
Halflight answered 3/4, 2018 at 10:56 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.