问题
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
回答1:
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.
回答2:
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;
}
}
回答3:
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;
}
}
回答4:
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;
}
来源:https://stackoverflow.com/questions/18568446/how-to-get-postal-code-using-user-current-location-in-android