This code adds a location to the MapFragment:
public class AddressMapFragment extends MapFragment {
LatLng location;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = super.onCreateView(inflater, container, savedInstanceState);
Bundle args = getArguments();
if(args!=null){
String fulladdress = args.getString("fulladdress");
new ReverseGeocoding().execute(fulladdress);
}
return v;
}
private void initMap(){
UiSettings settings = getMap().getUiSettings();
settings.setAllGesturesEnabled(false);
settings.setMyLocationButtonEnabled(false);
if(location!=null){
getMap().moveCamera(CameraUpdateFactory.newLatLngZoom(location,16));
getMap().addMarker(new MarkerOptions().position(location));
}
}
public class ReverseGeocoding extends AsyncTask<String, Void, Void>{
@Override
protected Void doInBackground(String... params) {
reverse_geocoding(params[0]);
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
initMap();
}
}
public void reverse_geocoding(String fulladdress){
Geocoder geo = new Geocoder(getActivity());
try {
List<Address> addresses = geo.getFromLocationName(fulladdress, 1);
if(addresses.size()>0){
Address address = addresses.get(0);
location = new LatLng(address.getLatitude(),address.getLongitude());
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
No hay comentarios:
Publicar un comentario