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
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;
}
}
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;
}
}
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.
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;
}
Related
i use the android geocoder to retrieve the name of cities. however the name is returned in the local we use to construct the geocoder. is their any way to retrieve the name in the local of the city (exemple paris for paris in france or Москва for moscow in russia).
Geocoder gcd = new Geocoder(context, Locale.getDefault());
List<Address> addresses = gcd.getFromLocation(lat, lng, 1);
if (addresses.size() > 0)
{
System.out.println(addresses.get(0).getLocality());
}
else
{
// do your staff
}
try this you will get the complete address
private void getLocation(double lat, double lng) {
try {
Geocoder gcd = new Geocoder(getApplicationContext(), Locale.getDefault());
List<Address> addresses = gcd.getFromLocation(lat, lng, 1);
if (addresses.size() > 0) {
Address address = addresses.get(0);
address.getAddressLine(0);
address.getAddressLine(1);
StringBuilder strReturnedAddress = new StringBuilder("");
for (int i = 0; i < address.getMaxAddressLineIndex(); i++) {
strReturnedAddress.append(address.getAddressLine(i)).append(" ");
}
Log.d(TAG, "strReturnedAddress : " + strReturnedAddress);
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
You can use the Geocoder's getFromLocation method:
final LatLng lLatLng = new LatLng(0.0, 0.0);
final LatLng lMaxResults = 10;
final Geocoder lGeocoder = new Geocoder(this, Locale.ENGLISH);
final List<Address> lAddresses = lGeocoder.getFromLocation(lLatLng.latitude, lLatLng.longitude, lMaxResults);
I am working on GoogleMap in Android.
So far, I have got the current location and displayed marker on it.
I got LatLong value from my current location.
I am able to get city name using following code :
Geocoder gcd = new Geocoder(MainActivity.this, Locale.getDefault());
List<Address> addresses = null;
try {
addresses = gcd.getFromLocation( mLocation.getLatitude(), mLocation.getLongitude(), 1);
} catch (IOException e) {
e.printStackTrace();
}
if (addresses.size() > 0)
System.out.println(addresses.get(0).getLocality());
Toast.makeText(MainActivity.this,""+addresses.get(0).getLocality(),Toast.LENGTH_LONG).show();
}
But, can't get the atual area name i.e. Bodakdev char rasta, Ahmedabad.
Now, my question is: How to get actual text value (Place name) from LatLong?
You can get this by Geocoder object in your google map. The method getFromLocation(double, double, int) does the work.
Geocoder geocoder;
List<Address> addresses;
geocoder = new Geocoder(this, Locale.getDefault());
addresses = geocoder.getFromLocation(latitude, longitude, 1); // 1 represent max location result to returned, by documents it recommended 1 to 5
String address = addresses.get(0).getAddressLine(0); // If any additional address line present than only, check with max available address lines by getMaxAddressLineIndex()
String city = addresses.get(0).getLocality();
String state = addresses.get(0).getAdminArea();
String country = addresses.get(0).getCountryName();
String postalCode = addresses.get(0).getPostalCode();
String knownName = addresses.get(0).getFeatureName();
Use this,
Geocoder geocoder = new Geocoder(this, Locale.getDefault());
List<Address> addresses = geocoder.getFromLocation(MyLat, MyLong, 1);
String cityName = addresses.get(0).getAddressLine(0);
String stateName = addresses.get(0).getAddressLine(1);
String countryName = addresses.get(0).getAddressLine(2);
String address = addresses.get(0).getAddressLine(0);
You can also get city name from zip-Code or postal-code of the place
private fun getLatLngByZipcode(zipcode: String): String {
var place = context.getString(R.string.location)
val geocoder = Geocoder(context, Locale.getDefault())
try {
val addresses = geocoder.getFromLocationName(zipcode, 5)
addresses?.forEach{
it?.locality?.apply {
place=this
}
}
}
catch (e: IOException) {
LogUtils.error(TAG,e.message)
}
return place
}
List<Address> addressList = geocoder.getFromLocationName(locationName, 5);
Log.d("size:",""+addressList.size());
The size always prints 1 . for example: I gave a street address marathahalli as a locationName . I got only 1 value but when i try the same street address in google map i get 10 address . please need some help or any links which can solve my problem .
I have used below code it is working for me, try this code.
String address = etEntreAddress.getText().toString();
Geocoder geocoder = new Geocoder(this, Locale.ENGLISH);
try {
List<Address> addresses = new ArrayList<Address>();
addresses = geocoder.getFromLocationName(
TextUtils.htmlEncode(address), 5);
if (addresses != null) {
for (int j = 0; j < 1; j++) {
Address returnedAddress = addresses.get(j);
Log.i("address", "returnedAddress :" + returnedAddress);
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
This question already has answers here:
Closed 10 years ago.
Possible Duplicate:
How can I find the latitude and longitude from address?
I want to get latitude and longitude of particular address . How can i do this ?
private void getFromLocation(String address)
{
double latitude= 0.0, longtitude= 0.0;
Geocoder geoCoder = new Geocoder(this, Locale.getDefault());
try
{
List<Address> addresses = geoCoder.getFromLocationName(address , 1);
if (addresses.size() > 0)
{
GeoPoint p = new GeoPoint(
(int) (addresses.get(0).getLatitude() * 1E6),
(int) (addresses.get(0).getLongitude() * 1E6));
latitude=p.getLatitudeE6()/1E6;
longtitude=p.getLongitudeE6()/1E6;
}
}
catch(Exception ee)
{
}
}
}
You can get from the below code,
private void GetLatitudeAndLongitude() {
geocoder = new Geocoder(mContext, Locale.getDefault());
try {
List<Address> addresses = geocoder.getFromLocationName(txtLocation.getText().toString().trim().toLowerCase(), 1);
if (addresses.size() > 0) {
homeInfoModel.setLalitude(String.valueOf(addresses.get(0).getLatitude()));
homeInfoModel.setLongitude(String.valueOf(addresses.get(0).getLongitude()));
}
} catch (IOException e) {
e.printStackTrace();
}
}
This will give you (loop through) all the matches of the address string.
If you just desire the first match, make sure address.size() is great than 0, then take address.get(0);
In my usage, I get all matches, and show them as options. The user then clicks one, and it selects that GPS location.
Geocoder geocoder = new Geocoder(getBaseContext());
List<Address> addresses;
try {
addresses = geocoder.getFromLocationName("Example StreeT, UK, DNFE", 20);
for(int i = 0; i < addresses.size(); i++) { // MULTIPLE MATCHES
Address addr = addresses.get(i);
double latitude = addr.getLatitude();
double longitude = addr.getLongitude(); // DO SOMETHING WITH VALUES
}
}
I want to get latitude and longitude of particular address . How can i do this ?
This is the sample solution to your question.
OR
List<Address> foundGeocode = null;
/* find the addresses by using getFromLocationName() method with the given address*/
foundGeocode = new Geocoder(this).getFromLocationName("address here", 1);
foundGeocode.get(0).getLatitude(); //getting latitude
foundGeocode.get(0).getLongitude();//getting longitude
For more details Geocoder
public List<Address> getFromLocationName (String locationName, int maxResults)
From a Geocoder object, you can call the getFromLocation
public List<Address> getFromLocation (double latitude, double longitude, int maxResults)
It will return a list of Address object that has a method getLocality
Geocoder gcd = new Geocoder(context, Locale.getDefault());
List<Address> addresses = gcd.getFromLocation(lat, lng, 1);
if (addresses.size() > 0)
System.out.println(addresses.get(0).getLocality());
for more detail
show the location in google map from address...will get the latitude and longitude using the address...
Geocoder coder = new Geocoder(this);
List<Address> address;
try {
address = coder.getFromLocationName(strAddress,5);
if (address == null) {
return null;
}
Address location = address.get(0);
location.getLatitude();
location.getLongitude();
p1 = new GeoPoint((int) (location.getLatitude() * 1E6),
(int) (location.getLongitude() * 1E6));
return p1;
strAddress is string that you pass of address. address variable is address converting and getting address.