/**
*
*/
package com.asksven.android.common.location;
import java.util.List;
import com.asksven.android.common.networkutils.DataNetwork;
import android.content.Context;
import android.location.Address;
import android.location.Geocoder;
import android.location.Location;
import android.util.Log;
/**
* Helper class for retrieing geo data for a given location
* As geo data requires data connection the call is only made
* if proper data connectivity exists
* @author sven
*
*/
public class GeoUtils
{
private static final String TAG = "GeoUtils";
public static String getNearestAddress(Context ctx, Location loc)
{
if (!DataNetwork.hasDataConnection(ctx))
{
return "";
}
Address address = getGeoData(ctx, loc);
String strRet = "";
if (address != null)
{
String addr0 = address.getAddressLine(0);
String addr1 = address.getAddressLine(1);
if (!addr0.equals(""))
{
strRet = addr0;
}
if (!addr1.equals(""))
{
if (!strRet.equals(""))
{
strRet = strRet + ", ";
}
strRet = strRet + addr1;
}
}
return strRet;
}
public static String getNearestCity(Context ctx, Location loc)
{
if (!DataNetwork.hasDataConnection(ctx))
{
return "";
}
Address address = getGeoData(ctx, loc);
String strRet = "";
if (address != null)
{
strRet = address.getLocality();
}
return strRet;
}
public static Address getGeoData(Context ctx, Location loc)
{
if (!DataNetwork.hasDataConnection(ctx))
{
return null;
}
Geocoder myGeocoder = new Geocoder(ctx);
Address address = null;
try
{
List<Address> list = myGeocoder.getFromLocation(
loc.getLatitude(),
loc.getLongitude(), 1);
if (list != null & list.size() > 0)
{
address = list.get(0);
}
}
catch (Exception e)
{
Log.e(TAG, "Failed while retrieving nearest city");
}
return address;
}
}