Jaimin Modi
Jaimin Modi

Reputation: 1677

"How to get actual text value(Place name) from LatLong ?"

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?

Upvotes: 0

Views: 120

Answers (3)

Kishan Shetty
Kishan Shetty

Reputation: 11

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
} 

Upvotes: 1

Jay Rathod
Jay Rathod

Reputation: 11255

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);

Upvotes: 1

Zahan Safallwa
Zahan Safallwa

Reputation: 3914

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(); 

Upvotes: 1

Related Questions