package
in.wptrafficanalyzer.locationgeocodingv2;
import
java.io.IOException;
import
java.util.List;
import
android.location.Address;
import
android.location.Geocoder;
import
android.os.AsyncTask;
import
android.os.Bundle;
import
android.support.v4.app.FragmentActivity;
import
android.view.Menu;
import
android.view.View;
import
android.view.View.OnClickListener;
import
android.widget.Button;
import
android.widget.EditText;
import
android.widget.Toast;
import
com.google.android.gms.maps.CameraUpdateFactory;
import
com.google.android.gms.maps.GoogleMap;
import
com.google.android.gms.maps.SupportMapFragment;
import
com.google.android.gms.maps.model.LatLng;
import
com.google.android.gms.maps.model.MarkerOptions;
public
class
MainActivity
extends
FragmentActivity {
GoogleMap googleMap;
MarkerOptions markerOptions;
LatLng latLng;
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SupportMapFragment supportMapFragment = (SupportMapFragment)
getSupportFragmentManager().findFragmentById(R.id.map);
googleMap = supportMapFragment.getMap();
Button btn_find = (Button) findViewById(R.id.btn_find);
OnClickListener findClickListener =
new
OnClickListener() {
@Override
public
void
onClick(View v) {
EditText etLocation = (EditText) findViewById(R.id.et_location);
String location = etLocation.getText().toString();
if
(location!=
null
&& !location.equals(
""
)){
new
GeocoderTask().execute(location);
}
}
};
btn_find.setOnClickListener(findClickListener);
}
@Override
public
boolean
onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return
true
;
}
private
class
GeocoderTask
extends
AsyncTask<String, Void, List<Address>>{
@Override
protected
List<Address> doInBackground(String... locationName) {
Geocoder geocoder =
new
Geocoder(getBaseContext());
List<Address> addresses =
null
;
try
{
addresses = geocoder.getFromLocationName(locationName[
0
],
3
);
}
catch
(IOException e) {
e.printStackTrace();
}
return
addresses;
}
@Override
protected
void
onPostExecute(List<Address> addresses) {
if
(addresses==
null
|| addresses.size()==
0
){
Toast.makeText(getBaseContext(),
"No Location found"
, Toast.LENGTH_SHORT).show();
}
googleMap.clear();
for
(
int
i=
0
;i<addresses.size();i++){
Address address = (Address) addresses.get(i);
latLng =
new
LatLng(address.getLatitude(), address.getLongitude());
String addressText = String.format(
"%s, %s"
,
address.getMaxAddressLineIndex() >
0
? address.getAddressLine(
0
) :
""
,
address.getCountryName());
markerOptions =
new
MarkerOptions();
markerOptions.position(latLng);
markerOptions.title(addressText);
googleMap.addMarker(markerOptions);
if
(i==
0
)
googleMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));
}
}
}
}