Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

android get zipcode of India from latitude and longitude [duplicate]

Tags:

android

gps

I need to get the zip code from a latitude and longitude, Im able to get the address with street names but cannot get the zip code. String pCode is returning Null in the below code. Below is the code I'm using:

    import java.io.IOException;
import java.util.List;
import java.util.Locale;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.ContentResolver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.location.Address;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.provider.Settings;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.Toast;

public class GetCurrentLocation extends Activity implements OnClickListener {

    private LocationManager locationMangaer=null;
    private LocationListener locationListener=null; 

    private Button btnGetLocation = null;
    private EditText editLocation = null;   
    private ProgressBar pb =null;

    private static final String TAG = "Debug";
    private Boolean flag = false;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);


        //if you want to lock screen for always Portrait mode  
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

        pb = (ProgressBar) findViewById(R.id.progressBar1);
        pb.setVisibility(View.INVISIBLE);

        editLocation = (EditText) findViewById(R.id.editTextLocation);  

        btnGetLocation = (Button) findViewById(R.id.btnLocation);
        btnGetLocation.setOnClickListener(this);

        locationMangaer = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

    }

    @Override
    public void onClick(View v) {
        flag = displayGpsStatus();
        if (flag) {

            Log.v(TAG, "onClick");      

            editLocation.setText("Please!! move your device to see the changes in coordinates."+"\nWait..");

            pb.setVisibility(View.VISIBLE);
            locationListener = new MyLocationListener();

            locationMangaer.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 10,
                    locationListener);

            } else {
            alertbox("Gps Status!!", "Your GPS is: OFF");
        }

    }

    /*----------Method to Check GPS is enable or disable ------------- */
    private Boolean displayGpsStatus() {
        ContentResolver contentResolver = getBaseContext().getContentResolver();
        boolean gpsStatus = Settings.Secure.isLocationProviderEnabled(
                contentResolver, LocationManager.GPS_PROVIDER);
        if (gpsStatus) {
            return true;

        } else {
            return false;
        }
    }

    /*----------Method to create an AlertBox ------------- */
    protected void alertbox(String title, String mymessage) {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setMessage("Your Device's GPS is Disable")
                .setCancelable(false)
                .setTitle("** Gps Status **")
                .setPositiveButton("Gps On",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int id) {
                                // finish the current activity
                                // AlertBoxAdvance.this.finish();
                                Intent myIntent = new Intent(
                                        Settings.ACTION_SECURITY_SETTINGS);
                                startActivity(myIntent);
                                dialog.cancel();
                            }
                        })
                .setNegativeButton("Cancel",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int id) {
                                // cancel the dialog box
                                dialog.cancel();
                            }
                        });
        AlertDialog alert = builder.create();
        alert.show();
    }

    /*----------Listener class to get coordinates ------------- */
    private class MyLocationListener implements LocationListener {
        @Override
        public void onLocationChanged(Location loc) {

                editLocation.setText("");
                pb.setVisibility(View.INVISIBLE);
                Toast.makeText(getBaseContext(),"Location changed : Lat: " + loc.getLatitude()
                                + " Lng: " + loc.getLongitude(),Toast.LENGTH_SHORT).show();
                String longitude = "Longitude: " +loc.getLongitude();  
                Log.v(TAG, longitude);
                String latitude = "Latitude: " +loc.getLatitude();
                Log.v(TAG, latitude);

                /*----------to get City-Name from coordinates ------------- */
                String cityName=null;
                String addrs = null;
                String pCode = null;
                Geocoder gcd = new Geocoder(getBaseContext(), Locale.getDefault());                  
                List<Address>  addresses;  
                try {  
                 addresses = gcd.getFromLocation(loc.getLatitude(), loc.getLongitude(), 1);  
                 if (addresses.size() > 0)  
                  System.out.println(addresses.get(0).getLocality());

                 cityName=addresses.get(0).getLocality();
                 addrs = addresses.get(0).getAddressLine(0);
                 pCode = addresses.get(0).getPostalCode();
                } catch (IOException e) {                 
                 e.printStackTrace();  
                } 

                String s = longitude+"\n"+latitude +"\n\nMy Currrent City is: "+cityName+" Address "+ addrs+
                        " Postal Code"+pCode;
                editLocation.setText(s);
        }

        @Override
        public void onProviderDisabled(String provider) {
            // TODO Auto-generated method stub          
        }

        @Override
        public void onProviderEnabled(String provider) {
            // TODO Auto-generated method stub          
        }

        @Override
        public void onStatusChanged(String provider, int status, Bundle extras) {
            // TODO Auto-generated method stub          
        }
    }



}
like image 756
Ananthavel Sundararajan Avatar asked Dec 12 '25 16:12

Ananthavel Sundararajan


1 Answers

use this api it will give zipcode also. by passing lat and log. http://ws.geonames.org/findNearbyPostalCodesJSON?formatted=true&lat=23.0333&lng=72.6167

like image 181
Bhavesh Jethani Avatar answered Dec 15 '25 08:12

Bhavesh Jethani